Para usuários de ASP, quanto mais simples for a operação do banco de dados, mais tempo eles terão para considerar a lógica e o código da aplicação, e a eficiência será maior.
Hoje estou aqui para dar uma ideia do funcionamento do banco de dados. Esses códigos são constantemente concluídos e modificados em meu aplicativo ASP de longo prazo. Também concluí muitos projetos com ele. problema em usá-lo diretamente. Claro, minhas habilidades são limitadas, então espero que todos possam discutir isso juntos.
Nota: Os códigos nesta postagem são todos versões VBScript. Além disso, é melhor que você já tenha uma certa base em caligrafia ASP.
Primeiro, deixe-me apresentar brevemente alguns recursos da minha classe:
Vários bancos de dados de diferentes tipos podem ser operados simultaneamente.
Não há necessidade de considerar a diferença nos tipos de dados e não há necessidade de pensar se devem ser adicionadas aspas simples aos campos de caracteres.
A chamada é muito simples e a operação principal no banco de dados geralmente requer apenas uma linha de código.
Suporte à reversão de transação mssql.
Instruções SQL podem ser geradas e geradas automaticamente para facilitar a depuração.
Como usar:
1. Modifique a primeira linha do arquivo clsDbctrl.asp para o local do seu próprio banco de dados (consulte a descrição da função CreatConn abaixo para obter o método de modificação). Se precisar se conectar a vários bancos de dados, você mesmo poderá adicioná-los, com o mesmo formato.
2. Inclua este arquivo asp em seu novo arquivo asp. como:
<!--#include file="Inc/clsDbctrl.asp" --> Ou:
<!--#include virtual="/Inc/clsDbctrl.asp"-->
3. Use o seguinte código para aplicar esta classe:
Uma conexão de banco de dados:
<%
OpenConn() 'Abre conexão com banco de dados
Dim db: Set db = New DbCtrl 'Criar objeto
'Seu código aqui...
Co(db): CloseConn() 'Libere o objeto e feche a conexão com o banco de dados
%>
Ou (uma ou mais conexões de banco de dados):
<%
Dim db1: Definir db1 = Novo DbCtrl: db1.dbConn = Oc(a)
Dim db2: Definir db2 = Novo DbCtrl: db2.dbConn = Oc(b)
'Seu código aqui...
Co(db1): Co(db2)
%>
4. Para exemplos de operação específicos, consulte os exemplos de código em cada descrição de função.
Visão geral dos métodos e propriedades (uso detalhado e exemplos estão abaixo):
Citar:
CreatConn gera string de conexão de banco de dados
Oc estabelece conexão com banco de dados
Objeto de co-liberação
OpenConn abre a conexão de banco de dados padrão
CloseConn fecha a conexão de banco de dados padrão
Propriedade dbCtrl.dbConn, obtém a conexão do banco de dados a ser operada, o valor padrão é Conn
Propriedade dbCtrl.dbErr, somente leitura, gera a mensagem de erro capturada
Propriedade dbCtrl.Version, somente leitura, informações sobre a versão do programa
Método dbCtrl.AutoId, obtém automaticamente o número de série exclusivo
Método dbCtrl.GetRecord para obter um conjunto de registros que atenda às condições
Método dbCtrl.GetRecordBySql, obtém o conjunto de registros com base na instrução sql
Método dbCtrl.GetRecordDetail, com base nos dados detalhados de um registro especificado
Método dbCtrl.AddRecord, adicione um novo registro
Método dbCtrl.UpdateRecord, atualiza registros de acordo com condições especificadas
Método dbCtrl.DeleteRecord, exclua registros que atendam às condições
O método dbCtrl.ReadTable obtém o conteúdo de outros campos em um registro com base em condições especificadas.
Método dbCtrl.C, feche o objeto do conjunto de registros
dbCtrl.wGetRecord,
dbCtrl.wAddRecord,
dbCtrl.wUpdateRecord,
dbCtrl.wDeleteRecord Esses quatro métodos são instruções SQL que obtêm as operações correspondentes (precedidas por w)
Convenção de parâmetros:
Como o ASP não possui um objeto Arguments e não pode utilizar parâmetros dinâmicos, no código desta classe, Array é utilizado para obter esse efeito. Alguns parâmetros nesta classe podem usar arrays (conforme observado na descrição do parâmetro), mas o seguinte formato deve ser seguido ao usar arrays:
Array("Campo1:Valor1", "Campo2:Verdadeiro", "Campo3:100")
Sim, é um pouco parecido com o formato json. Se houver variáveis envolvidas, é assim:
Array("Campo1:" & Valor1, "Campo2:" & Valor2, "Campo3:" & Valor3)
Pode-se dizer que quase todo o conteúdo relacionado aos campos do banco de dados nesta classe pode usar o formato de array acima para definir condições ou obter conteúdo. A maior característica aqui é que você não precisa considerar o tipo do campo ao usá-lo. Basta seguir o campo com dois pontos e depois o valor correspondente. Se você costuma escrever programas ASP manualmente, logo sentirá o encanto de usar esse método. Além do tipo de dados, também é muito conveniente adicionar e excluir condições a qualquer momento. Não importa se você ainda não sabe como usá-lo, há muitos exemplos abaixo para ilustrar esse problema.
Na verdade, não é difícil encapsular as operações de banco de dados do ASP. Acredito que você já tenha feito código semelhante ou tenha emprestado o código encapsulado de outras pessoas. Mas, como todos sabem, quando ocorre um erro ao usar código encapsulado, a depuração é uma questão problemática. De modo geral, quanto mais simples for a operação encapsulada, mais complicada será a depuração. Quando escrevi esses códigos, tentei o meu melhor para considerar como solucionar erros se algo desse errado. Ao mesmo tempo que simplifiquei o código para os usuários operarem o banco de dados tanto quanto possível, posso gerar instruções SQL a qualquer momento para solucionar erros.
Finalmente, deve-se notar que as operações de banco de dados ASP envolvidas neste artigo não são adequadas para grandes dados. Como você sabe, é melhor usar procedimentos armazenados para operar grandes dados. . Também encapsulado. Há também uma questão de eficiência. Se você deseja buscar alta eficiência, ainda deve considerar o COM+ ao usar o ASP. Portanto, novamente, esta categoria é adequada para projetos ASP de pequeno e médio porte.
Ok, aqui estão as instruções detalhadas de uso:
um. Conexão de banco de dados
Considerando os hábitos de uso da maioria das pessoas, um processo público é utilizado para conexão com o banco de dados, portanto, todos precisam modificá-lo no código. Caso já tenha estabelecido uma conexão com o banco de dados, basta comentar estas linhas. O código possui quatro métodos de conexão de banco de dados integrados: MSSql, Access, MySQL e Oracle. Claro, você também pode adicioná-los ou excluí-los no código-fonte. Exemplo de modificação:
Dim a: a = CreatConn(0, "TestData", "localhost", "nome de usuário", "senha do usuário")
Dim b : b = CreatConn(1, "Dados/%TestDb%.mdb", "", "", "")
Para explicar, o primeiro parâmetro pode ser uma string. Se você estiver usando o Access, poderá inserir um caminho relativo e um caminho absoluto no segundo parâmetro. Se tiver uma senha, você também poderá inseri-la no quinto parâmetro, como:
Dim c : c = CreatConn("ACESSO", "E:/MyWeb/Data/%TestDB%.mdb", "", "", "mdbpassword")
Funções relacionadas:
Protótipo: CreateConn(dbType, strDB, strServer, strUid, strPwd)
Função: Estabelecer string de conexão do banco de dados
Valor de retorno: String
parâmetro:
dbType: tipo de banco de dados de conexão Integer ou String
(0 ou "MSSQL") - Microsoft SQL Server
(1 ou "ACESSO") - Microsoft Office Access
(2 ou "MYSQL") - Servidor MySQL
(3 ou "ORACLE") - Servidor Oracle
strDB: String nome do banco de dados ou endereço do banco de dados (o Access pode usar caminhos absolutos ou relativos)
strServer: String endereço do servidor de banco de dados, deixe em branco para Access.
strUid: String nome de usuário do banco de dados, deixe em branco para Access.
strPwd: Senha do banco de dados de string
Protótipo: Oc(connStr)
Função: Abrir conexão com banco de dados
Valor de retorno: objeto de conexão de banco de dados de objeto
parâmetro:
connStr: String de conexão do banco de dados, gerada pela função CreateConn
Protótipo: Co(obj)
Função: fechar objeto
parâmetro:
obj: Object O nome do objeto a ser fechado
Protótipo: OpenConn
Função: Abra a conexão de banco de dados padrão e crie automaticamente um objeto de conexão denominado Conn.
Parâmetros: nenhum
Protótipo: CloseConn
Função: Fecha o objeto de conexão de banco de dados padrão denominado Conn
Parâmetros: nenhum
2. Operações de banco de dados
A seguir está a descrição da função desta classe de operação de banco de dados. Ela deve ser considerada um manual.
Protótipo: dbCtrl.dbConn(objConn)
Função: Obtenha o objeto de conexão com o banco de dados
parâmetro:
objConn: Object O objeto de conexão com o banco de dados que foi estabelecido
Exemplo:
Dim db: Definir db = Novo DbCtrl
db.dbConn = Oc(CreatConn(1,"E:/WebSite/MeuSite/Data/%TestDb%.mdb","","",""))
Co(db)
Descrição: Este atributo é opcional. Se este atributo não for especificado, a conexão de dados padrão será o objeto de conexão de banco de dados denominado Conn na página.
Protótipo: dbCtrl.AutoID(NomedaTabela)
Função: Obtenha automaticamente um número de série exclusivo (numeração automática)
Valor de retorno: inteiro
parâmetro:
TableName: String O nome da tabela de dados cujo número de série exclusivo precisa ser obtido
Exemplo:
Escurecer novoId
novoId = db.AutoId("TestTable")
Resposta.Write(newId)
Protótipo: dbCtrl.GetRecord(TableName,FieldsList,Condição,OrderField,ShowN)
Função: Obtenha o conjunto de registros que atende às condições
Valor de retorno: objeto do conjunto de registros do objeto
parâmetro:
TableName: nome da tabela de strings
FieldsList: Nomes de campos de string, separados por vírgulas, deixe em branco para exibir todos os campos
Condição: condição de consulta String ou Array Se for um array, deve seguir a convenção de parâmetros anterior.
orderField: método de classificação de strings
ShowN: Inteiro obtém o número de registros, equivalente a Select Top N em SQL
Exemplo:
Escurece
Defina rs = db.GetRecord("TestTable","fId,fName,fAge","fSex='Male' And IsActive = 1","fName Asc", 0)
Embora não seja rs.eof
Response.Write ("O nome é:" & rs(1) & "A idade é:" & rs(2) & "<br />")
rs.movenext()
Wend
db.C(rs)
Para o exemplo acima, especificar as condições no seguinte formato de array é equivalente:
Definir rs = db.wGetRecord("TestTable","fId,fName,fAge", Array("fSex:Male","IsActive:1"), "fName Asc", 0)
Além disso, você pode usar a seguinte instrução para visualizar a instrução SQL gerada por esta função:
Response.Write(db.wGetRecord("TestTable","fId,fName,fAge", Array("fSex:Male","IsActive:1"), "fName Asc", 0))
Como você pode ver, basta adicionar um w antes da função original.
Protótipo: dbCtrl.GetRecordBySQL(strSelect)
Função: Obtenha o conjunto de registros com base na instrução SQL
Valor de retorno: objeto do conjunto de registros do objeto
parâmetro:
strSelect: Instrução SQL de string usada para gerar o conjunto de registros
Exemplo:
Escurece
Definir rs = db.GetRecordBySQL("Selecione a.Id, a.LastName, b.Group From User a InnerJoin Depart b On a.GroupId = b.GroupId")
'Seu código aqui...
db.C(rs)
Protótipo: dbCtrl.GetRecordDetail(TableName, Condição)
Função: Baseado em dados detalhados de um registro especificado
Valor de retorno: objeto do conjunto de registros do objeto
parâmetro:
TableName: nome da tabela de strings
Condição: condição de consulta String ou Array Se for um array, deve seguir a convenção de parâmetros anterior.
Exemplo:
Dim rs,Id
Id = Request.QueryString("id")
Definir rs = db.GetRecordDetail("TestTable","Id=" & id)
'Seu código aqui...
db.C(rs)
Descrição: como você já pode ver, é mais comumente usado para abrir uma página detalhada (como uma página de conteúdo de notícias)
Protótipo: dbCtrl.AddRecord(TableName, ValueList)
Função: Adicionar um novo registro
Valor de retorno: número de identificação do novo registro (sucesso) ou 0 (falha)
parâmetro:
TableName: nome da tabela de strings
ValueList: Array Os campos e valores inseridos na tabela só podem ser arrays e devem seguir as convenções de parâmetros anteriores
Exemplo:
Dim fNome, fSex, fWorkYear, fBirth
fNome = "Wang Ertan"
fSexo = "masculino"
fAnoTrabalho = 12
fNascimento = Cdata("23/10/1981")
Resultado escuro
resultado = db.AddRecord("TestTable",Array("Nome:"&fName, "Sexo:"&fSex, "AnoTrabalho:"&fAnoTrabalho, "Aniversário:"&fNascimento, "ÉAtivo:Verdadeiro"))
Se resultado<>0 Então
Response.Write("Adicionar registro com sucesso! O ID de numeração automática deste registro é "& resultado)
Terminar se
Veja, você realmente não precisa considerar o tipo de campo.
Se quiser ver os campos e valores do código com mais clareza, você também pode escrever assim, mas depende da sua preferência:
resultado = db.AddRecord("TestTable",Array("Nome:" & fNome,_
"Sexo:" & fSexo,_
"AnoTrabalho:" & fAnoTrabalho,_
"Aniversário:" & fNascimento,_
"EstáAtivo:Verdadeiro"))
Além disso, você pode usar a seguinte instrução para visualizar a instrução SQL gerada por esta função:
Response.Write(db.wAddRecord("TestTable",Array("Nome:"&fName, "Sexo:"&fSex, "WorkYear:"&fWorkYear, "Aniversário:"&fBirth, "IsActive:True")))
Nota: O valor de Id retornado usa um método relativamente estúpido, que não garante precisão quando a quantidade de dados simultâneos é grande. Use com cuidado.
Protótipo: dbCtrl.UpdateRecord(TableName, Condition, ValueList)
Função: Atualizar registros com base em condições especificadas
Valor de retorno: 1 (sucesso) ou 0 (falha)
parâmetro:
TableName: nome da tabela de strings
Condição: Condição de atualização de String ou Array, se for um array, deve seguir a convenção de parâmetros anterior
ValueList: Campos e valores atualizados de String ou Array. Se for um array, deve seguir a convenção de parâmetros anterior.
Exemplo:
Dim fNome, fWorkYear
fNome = "Wang Santan"
fAnoTrabalho = 10
Resultado escuro
resultado = db.UpdateRecord("TestTable", "UId = 1308", Array("Nome:"&fName, "WorkYear:"&fWorkYear))
Se resultado<>0 Então
Response.Write("Atualização de dados com sucesso!")
Terminar se
Além disso, você pode usar a seguinte instrução para visualizar a instrução SQL gerada por esta função:
Response.Write(db.wUpdateRecord("TestTable", "UId = 1308", Array("Nome:"&fName, "WorkYear:"&fWorkYear)))
Protótipo: dbCtrl.DeleteRecord(TableName,IDFieldName,IDValues)
Função: Excluir registros que atendam às condições
Valor de retorno: 1 (sucesso) ou 0 (falha)
parâmetro:
TableName: nome da tabela de strings
IDFieldName: String O nome do campo Id da tabela
IDValues: Condição de exclusão de String ou Array, que pode ser vários números de ID separados por vírgulas. Se for um array, deve seguir a convenção de parâmetros anterior.
Exemplo:
Escurecer IDs, resultado
ids = Request.Form("selectid") 'Você pode assumir que os valores obtidos aqui são 12, 34, 256, 314 (os valores enviados pela caixa de seleção são assim)
resultado = db.DeleteRecord("TestTable", "UId", ids)
Se resultado<>0 Então
Response.Write("Excluir dados com sucesso!")
Terminar se
Claro, você também pode especificar outras condições usando strings ou arrays, como:
resultado = db.DeleteRecord("TestTable", "UId", "IsActive = 0 And FirstName = 'Tom'")
Além disso, você pode usar a seguinte instrução para visualizar a instrução SQL gerada por esta função:
Response.Write(db.wDeleteRecord("TestTable", "UId", ids))
Protótipo: dbCtrl.ReadTable(TableName, Condition, GetFieldNames)
Função: Obtenha o conteúdo de outros campos em um registro com base em condições especificadas
Valor de retorno: String (GetFieldNames é um campo único) ou Array (GetFieldNames são vários campos)
parâmetro:
TableName: nome da tabela de strings
Condição: condição de consulta String ou Array Se for um array, deve seguir a convenção de parâmetros anterior.
GetFieldNames: String Um único nome de campo ou vários nomes de campos separados por vírgulas
Exemplo:
Dim uid, resultado
uid = rs("postid") 'Suponha que este seja o valor do ID do usuário em um conjunto de registros na página
resultado = db.ReadTable("UserTable","UId=" & uid, "UserName")
Response.Write("Editor:" & resultado)
Devo dizer que em aplicações reais, esta função é provavelmente a mais utilizada. O que você vê acima é um exemplo muito comum de obter outro campo em outra tabela cujo valor é igual a esse valor. um pouco difícil de pronunciar, mas é isso que significa). O exemplo a seguir mostrará como obter vários valores correspondentes com base neste valor.
Dim uid, resultado
uid = rs("postid") 'Suponha que este seja o valor do ID do usuário em um conjunto de registros na página
resultado = db.ReadTable("UserTable","UId=" & uid, "UserName,UserSex,UserAge")
Response.Write("Editor:" & result(0) & "<br /> Gênero: " & result(1) & "<br /> Idade: " &result(2))
Como você pode ver, é simples assim. Inserir vários nomes de campo resulta em uma matriz.
Protótipo: dbCtrl.C(objRs)
Função: Fechar o objeto do conjunto de registros
parâmetro:
objRs: Object Um objeto de conjunto de registros na página
Exemplo:
Escurece
Definir rs = db.GetRecordDetail("TestTable","Id=123" )
'Seu código aqui...
db.C(rs)
Esta função foi usada em muitos exemplos acima, então não vou explicar muito. Ela é equivalente a rs.close: set rs = nada.
clsDbctrl.rar