Pour les utilisateurs ASP, plus le fonctionnement de la base de données est simple, plus ils ont de temps pour considérer la logique et le code d'application, et l'efficacité sera plus élevée.
Aujourd'hui, je suis là pour vous donner une idée du fonctionnement de la base de données. Ces codes sont constamment complétés et modifiés dans mon application ASP à long terme. J'ai également réalisé de nombreux projets avec. problème en l'utilisant directement. Bien sûr, mes capacités sont limitées, j’espère donc que tout le monde pourra en discuter ensemble.
Remarque : les codes de cet article sont tous des versions de VBScript. De plus, il est préférable que vous ayez déjà une certaine base en écriture manuscrite ASP.
Tout d’abord, permettez-moi de présenter brièvement quelques fonctionnalités de ma classe :
Plusieurs bases de données de différents types peuvent être exploitées simultanément.
Il n'est pas du tout nécessaire de prendre en compte la différence entre les types de données, ni de se demander s'il convient d'ajouter des guillemets simples aux champs de caractères.
L’appel est très simple, et l’opération principale sur la base de données ne nécessite généralement qu’une seule ligne de code.
Prise en charge de la restauration des transactions mssql.
Les instructions SQL peuvent être automatiquement générées et sorties pour faciliter le débogage.
Comment utiliser :
1. Modifiez la première ligne du fichier clsDbctrl.asp vers votre propre emplacement de base de données (reportez-vous à la description de la fonction CreatConn ci-dessous pour la méthode de modification). Si vous devez vous connecter à plusieurs bases de données, vous pouvez les ajouter vous-même, avec le même format.
2. Incluez ce fichier asp dans votre nouveau fichier asp. comme:
<!--#include file="Inc/clsDbctrl.asp" --> Ou :
<!--#include virtual="/Inc/clsDbctrl.asp"-->
3. Utilisez le code suivant pour appliquer cette classe :
Une connexion à une base de données :
<%
OpenConn() 'Ouvrir la connexion à la base de données
Dim db : Set db = New DbCtrl 'Créer un objet
'Votre code ici...
Co(db) : CloseConn() 'Libérez l'objet et fermez la connexion à la base de données
%>
Ou (une ou plusieurs connexions à la base de données) :
<%
Dim db1 : Définir db1 = Nouveau DbCtrl : db1.dbConn = Oc(a)
Dim db2 : Définir db2 = Nouveau DbCtrl : db2.dbConn = Oc(b)
'Votre code ici...
Co(db1) : Co(db2)
%>
4. Pour des exemples d'opérations spécifiques, veuillez vous référer aux exemples de code dans chaque description de fonction.
Aperçu des méthodes et des propriétés (une utilisation détaillée et des exemples sont ci-dessous) :
Citation:
CreatConn génère une chaîne de connexion à la base de données
Oc établit une connexion à la base de données
Objet de co-libération
OpenConn ouvre la connexion à la base de données par défaut
CloseConn ferme la connexion à la base de données par défaut
Propriété dbCtrl.dbConn, obtient la connexion à la base de données à exploiter, la valeur par défaut est Conn
La propriété dbCtrl.dbErr, en lecture seule, génère le message d'erreur capturé
Propriété dbCtrl.Version, lecture seule, informations sur la version du programme
Méthode dbCtrl.AutoId, obtient automatiquement le numéro de série unique
Méthode dbCtrl.GetRecord pour obtenir un jeu d'enregistrements qui répond aux conditions
Méthode dbCtrl.GetRecordBySql, obtient le jeu d'enregistrements en fonction de l'instruction SQL
Méthode dbCtrl.GetRecordDetail, basée sur les données détaillées d'un enregistrement spécifié
Méthode dbCtrl.AddRecord, ajouter un nouvel enregistrement
Méthode dbCtrl.UpdateRecord, met à jour les enregistrements selon les conditions spécifiées
Méthode dbCtrl.DeleteRecord, supprime les enregistrements qui remplissent les conditions
La méthode dbCtrl.ReadTable obtient le contenu des autres champs d'un enregistrement en fonction de conditions spécifiées.
Méthode dbCtrl.C, fermez l'objet de jeu d'enregistrements
dbCtrl.wGetRecord,
dbCtrl.wAddRecord,
dbCtrl.wUpdateRecord,
dbCtrl.wDeleteRecord Ces quatre méthodes sont des instructions SQL qui obtiennent les opérations correspondantes (précédées de w)
Convention des paramètres :
Étant donné qu'ASP n'a pas d'objet Arguments et ne peut pas utiliser de paramètres dynamiques, dans le code de cette classe, Array est utilisé pour obtenir cet effet. Certains paramètres de cette classe peuvent utiliser des tableaux (comme indiqué dans la description du paramètre), mais le format suivant doit être suivi lors de l'utilisation de tableaux :
Tableau("Champ1:Valeur1", "Champ2:Vrai", "Champ3:100")
Oui, c'est un peu comme le format json. Si des variables sont impliquées, alors c'est comme ça :
Tableau("Champ1 :" & Valeur1, "Champ2 :" & Valeur2, "Champ3 :" & Valeur3)
On peut dire que presque tout le contenu lié aux champs de base de données de cette classe peut utiliser le format de tableau ci-dessus pour définir des conditions ou obtenir du contenu. La plus grande caractéristique ici est que vous n'avez pas besoin de prendre en compte le type du champ lorsque vous l'utilisez. Suivez simplement le champ avec deux points puis la valeur correspondante. Si vous écrivez souvent des programmes ASP à la main, vous ressentirez bientôt le charme d'utiliser cette méthode. En plus du type de données, il est également très pratique d'ajouter et de supprimer des conditions à tout moment. Peu importe si vous ne comprenez pas encore comment l'utiliser, il existe de nombreux exemples ci-dessous pour illustrer ce problème.
Il n'est en fait pas difficile d'encapsuler les opérations de base de données d'ASP. Je pense que vous avez déjà créé un code similaire ou emprunté le code encapsulé d'autres personnes. Mais comme tout le monde le sait, lorsqu'une erreur se produit lors de l'utilisation de code encapsulé, le débogage est une question gênante. D'une manière générale, plus l'opération encapsulée est simple, plus le débogage sera compliqué. Lorsque j'ai écrit ces codes, j'ai fait de mon mieux pour réfléchir à la manière de résoudre les erreurs en cas de problème. Tout en simplifiant autant que possible le code pour permettre aux utilisateurs d'utiliser la base de données, je peux générer des instructions SQL à tout moment pour résoudre les erreurs.
Enfin, il convient de noter que les opérations de base de données ASP impliquées dans cet article ne sont pas adaptées aux données volumineuses. Comme vous le savez, il est préférable d'utiliser des procédures stockées pour exploiter des données volumineuses. À l'avenir, j'envisagerai le fonctionnement des procédures stockées. . Également encapsulé. Il existe également un problème d'efficacité. Si vous souhaitez rechercher une efficacité élevée, vous devez toujours envisager COM+ lorsque vous utilisez ASP. Là encore, cette catégorie convient aux projets ASP de petite et moyenne taille.
Bon, voici le mode d'emploi détaillé :
un. Connexion à la base de données
Compte tenu des habitudes d'utilisation de la plupart des gens, un processus public est utilisé pour la connexion à la base de données, donc tout le monde doit le modifier dans le code. Si vous avez déjà établi une connexion à la base de données, commentez simplement ces lignes. Le code intègre quatre méthodes de connexion à la base de données : MSSql, Access, MySQL et Oracle. Bien sûr, vous pouvez également les ajouter ou les supprimer dans le code source. Modifier l'exemple :
Dim a : a = CreatConn(0, "TestData", "localhost", "username", "userpassword")
Dim b : b = CreatConn(1, "Data/%TestDb%.mdb", "", "", "")
Pour expliquer, le premier paramètre peut être une chaîne. Si vous utilisez Access, vous pouvez saisir à la fois un chemin relatif et un chemin absolu dans le deuxième paramètre. Si vous disposez d'un mot de passe, vous pouvez également le saisir dans le cinquième paramètre, par exemple :
Dim c : c = CreatConn("ACCESS", "E:/MyWeb/Data/%TestDB%.mdb", "", "", "mdbpassword")
Fonctions associées :
Prototype : CreateConn (dbType, strDB, strServer, strUid, strPwd)
Fonction : Établir la chaîne de connexion à la base de données
Valeur de retour : chaîne
paramètre:
dbType : type de base de données de connexion Integer ou String
(0 ou "MSSQL") - Microsoft SQL Server
(1 ou "ACCÈS") - Microsoft Office Access
(2 ou "MYSQL") - Serveur MySQL
(3 ou "ORACLE") - serveur Oracle
strDB : nom de la base de données de chaîne ou adresse de la base de données (Access peut utiliser des chemins absolus ou relatifs)
strServer : adresse du serveur de base de données de chaîne, veuillez la laisser vide pour Access.
strUid : nom d'utilisateur de la base de données de chaîne, veuillez le laisser vide pour Access.
strPwd : mot de passe de la base de données de chaîne
Modèle réel : Oc(connStr)
Fonction : Ouvrir la connexion à la base de données
Valeur de retour : Objet de connexion à la base de données
paramètre:
connStr : chaîne de connexion à la base de données String, générée par la fonction CreateConn
Modèle réel : Co(obj)
Fonction : fermer l'objet
paramètre:
obj : Object Le nom de l'objet à fermer
Modèle réel : OpenConn
Fonction : ouvrez la connexion à la base de données par défaut et créez automatiquement un objet de connexion nommé Conn.
Paramètres : aucun
Modèle réel : CloseConn
Fonction : Fermez l'objet de connexion à la base de données par défaut nommé Conn
Paramètres : aucun
2. Opérations de base de données
Ce qui suit est la description des fonctions de cette classe d'opérations de base de données. Elle doit être considérée comme un manuel. Veuillez consulter les exemples d'application.
Prototype : dbCtrl.dbConn(objConn)
Fonction : Récupérer l'objet de connexion à la base de données
paramètre:
objConn : Object L'objet de connexion à la base de données qui a été établi
Exemple:
Dim db : Définir db = Nouveau DbCtrl
db.dbConn = Oc(CreatConn(1,"E:/WebSite/MySite/Data/%TestDb%.mdb","","",""))
Co(db)
Description : cet attribut est facultatif. Si cet attribut n'est pas spécifié, la connexion de données par défaut est l'objet de connexion à la base de données nommé Conn sur la page.
Prototype : dbCtrl.AutoID(TableName)
Fonction : obtenir automatiquement un numéro de série unique (numérotation automatique)
Valeur de retour : Entier
paramètre:
TableName : String Le nom de la table de données dont le numéro de série unique doit être obtenu
Exemple:
Faible nouvel identifiant
newId = db.AutoId("TestTable")
Réponse.Write (newId)
Prototype : dbCtrl.GetRecord (TableName, FieldsList, Condition, OrderField, ShowN)
Fonction : Obtenir le jeu d'enregistrements qui répond aux conditions
Valeur de retour : objet de jeu d'enregistrements d'objet
paramètre:
TableName : Nom de la table de chaînes
FieldsList : chaînez les noms des champs, séparés par des virgules, laissez vide pour afficher tous les champs
Condition : condition de requête de chaîne ou de tableau. S'il s'agit d'un tableau, il doit suivre la convention de paramètre précédente.
orderField : méthode de tri des chaînes
ShowN : Integer obtient le nombre d'enregistrements, équivalent à Select Top N en SQL
Exemple:
Dimrs
Définir rs = db.GetRecord("TestTable","fId,fName,fAge","fSex='Male' And IsActive = 1","fName Asc", 0)
Bien que ce ne soit pas rs.eof
Response.Write ("Le nom est :" & rs(1) & " L'âge est :" & rs(2) & "<br />")
rs.movenext()
Wende
db.C(rs)
Pour l'exemple ci-dessus, spécifier les conditions dans le format de tableau suivant est équivalent :
Définir rs = db.wGetRecord("TestTable","fId,fName,fAge", Array("fSex:Male","IsActive:1"), "fName Asc", 0)
De plus, vous pouvez utiliser l'instruction suivante pour afficher l'instruction SQL générée par cette fonction :
Response.Write(db.wGetRecord("TestTable","fId,fName,fAge", Array("fSex:Male","IsActive:1"), "fName Asc", 0))
Comme vous pouvez le voir, ajoutez simplement un w avant la fonction d'origine.
Prototype : dbCtrl.GetRecordBySQL(strSelect)
Fonction : obtenir un jeu d'enregistrements basé sur une instruction SQL
Valeur de retour : objet de jeu d'enregistrements d'objet
paramètre:
strSelect : instruction SQL de chaîne utilisée pour générer un jeu d'enregistrements
Exemple:
Dimrs
Set rs = db.GetRecordBySQL("Sélectionnez a.Id, a.LastName, b.Group From User a InnerJoin Depart b On a.GroupId = b.GroupId")
'Votre code ici...
db.C(rs)
Prototype : dbCtrl.GetRecordDetail (TableName, Condition)
Fonction : basé sur les données détaillées d'un enregistrement spécifié
Valeur de retour : objet de jeu d'enregistrements d'objet
paramètre:
TableName : Nom de la table de chaînes
Condition : condition de requête de chaîne ou de tableau. S'il s'agit d'un tableau, il doit suivre la convention de paramètre précédente.
Exemple:
Dim rs,Id
Identifiant = Request.QueryString("id")
Définir rs = db.GetRecordDetail("TestTable","Id=" & id)
'Votre code ici...
db.C(rs)
Description : Comme vous pouvez déjà le voir, ceci est le plus souvent utilisé pour ouvrir une page détaillée (comme une page de contenu d'actualité)
Prototype : dbCtrl.AddRecord (TableName, ValueList)
Fonction : Ajouter un nouvel enregistrement
Valeur de retour : numéro d'identification du nouvel enregistrement (succès) ou 0 (échec)
paramètre:
TableName : Nom de la table de chaînes
ValueList : Array Les champs et les valeurs insérés dans le tableau ne peuvent être que des tableaux et doivent suivre les conventions de paramètres précédentes
Exemple:
Dim fNom, fSex, fWorkYear, fBirth
fNom = "Wang Ertan"
fSexe = "masculin"
fAnnéeTravail = 12
fNaissance = Cdate("1981-10-23")
Résultat sombre
result = db.AddRecord("TestTable",Array("Name:"&fName, "Sex:"&fSex, "WorkYear:"&fWorkYear, "Birthday:"&fBirth, "IsActive:True"))
Si résultat<>0 Alors
Response.Write("Ajouter l'enregistrement avec succès ! L'ID de numérotation automatique de cet enregistrement est "& résultat)
Fin si
Vous voyez, vous n’avez vraiment pas besoin de considérer le type de champ.
Si vous souhaitez voir plus clairement les champs et les valeurs dans le code, vous pouvez également l'écrire comme ceci, mais cela dépend de vos préférences :
résultat = db.AddRecord("TestTable",Array("Nom :" & fName,_
"Sexe :" & fSexe,_
"AnnéeTravail :" & fAnnéeTravail,_
"Anniversaire :" & fNaissance,_
"EstActive:Vrai"))
De plus, vous pouvez utiliser l'instruction suivante pour afficher l'instruction SQL générée par cette fonction :
Response.Write(db.wAddRecord("TestTable",Array("Name:"&fName, "Sex:"&fSex, "WorkYear:"&fWorkYear, "Birthday:"&fBirth, "IsActive:True")))
Remarque : La valeur Id renvoyée utilise une méthode relativement stupide, qui ne garantit pas l'exactitude lorsque la quantité de données simultanées est importante. À utiliser avec prudence.
Prototype : dbCtrl.UpdateRecord (TableName, Condition, ValueList)
Fonction : mettre à jour les enregistrements en fonction de conditions spécifiées
Valeur de retour : 1 (succès) ou 0 (échec)
paramètre:
TableName : Nom de la table de chaînes
Condition : condition de mise à jour d'une chaîne ou d'un tableau. S'il s'agit d'un tableau, il doit suivre la convention de paramètre précédente.
ValueList : champs et valeurs mis à jour de chaîne ou de tableau. S'il s'agit d'un tableau, il doit suivre la convention de paramètre précédente.
Exemple:
Dim fNom, fWorkYear
fNom = "Wang Santan"
fAnnéeTravail = 10
Résultat sombre
result = db.UpdateRecord("TestTable", "UId = 1308", Array("Name:"&fName, "WorkYear:"&fWorkYear))
Si résultat<>0 Alors
Response.Write("Mise à jour des données avec succès !")
Fin si
De plus, vous pouvez utiliser l'instruction suivante pour afficher l'instruction SQL générée par cette fonction :
Response.Write(db.wUpdateRecord("TestTable", "UId = 1308", Array("Name:"&fName, "WorkYear:"&fWorkYear)))
Prototype : dbCtrl.DeleteRecord (TableName, IDFieldName, IDValues)
Fonction : Supprimer les enregistrements qui remplissent les conditions
Valeur de retour : 1 (succès) ou 0 (échec)
paramètre:
TableName : Nom de la table de chaînes
IDFieldName : String Le nom du champ Id de la table
IDValues : condition de suppression de chaîne ou de tableau, qui peut être constituée de plusieurs numéros d'identification séparés par des virgules. S'il s'agit d'un tableau, il doit suivre la convention de paramètre précédente.
Exemple:
Dim ids, résultat
ids = Request.Form("selectid") 'Vous pouvez supposer que les valeurs obtenues ici sont 12, 34, 256, 314 (les valeurs soumises par la case à cocher sont comme ceci)
résultat = db.DeleteRecord("TestTable", "UId", identifiants)
Si résultat<>0 Alors
Response.Write("Supprimer les données avec succès !")
Fin si
Bien entendu, vous pouvez également spécifier d'autres conditions à l'aide de chaînes ou de tableaux, telles que :
result = db.DeleteRecord("TestTable", "UId", "IsActive = 0 And FirstName = 'Tom'")
De plus, vous pouvez utiliser l'instruction suivante pour afficher l'instruction SQL générée par cette fonction :
Response.Write(db.wDeleteRecord("TestTable", "UId", identifiants))
Prototype : dbCtrl.ReadTable (TableName, Condition, GetFieldNames)
Fonction : obtenir le contenu des autres champs d'un enregistrement en fonction de conditions spécifiées
Valeur de retour : String (GetFieldNames est un champ unique) ou Array (GetFieldNames est constitué de plusieurs champs)
paramètre:
TableName : Nom de la table de chaînes
Condition : condition de requête de chaîne ou de tableau. S'il s'agit d'un tableau, il doit suivre la convention de paramètre précédente.
GetFieldNames : String Un nom de champ unique ou plusieurs noms de champs séparés par des virgules
Exemple:
Liquide faible, résultat
uid = rs("postid") 'Supposons qu'il s'agisse de la valeur de l'identifiant utilisateur dans un enregistrement défini sur la page
résultat = db.ReadTable("UserTable","UId=" & uid, "UserName")
Response.Write("Éditeur :" et résultat)
Je dois dire que dans les applications réelles, cette fonction est probablement la plus utilisée. Ce que vous voyez ci-dessus est un exemple très courant d'obtenir un autre champ dans une autre table dont la valeur est égale à cette valeur. un peu difficile à prononcer, mais c'est ce que cela signifie). L'exemple suivant vous montrera comment obtenir plusieurs valeurs correspondantes en fonction de cette valeur.
Liquide faible, résultat
uid = rs("postid") 'Supposons qu'il s'agisse de la valeur de l'identifiant utilisateur dans un enregistrement défini sur la page
résultat = db.ReadTable("UserTable","UId=" & uid, "UserName,UserSex,UserAge")
Response.Write("Éditeur :" & result(0) & "<br /> Sexe : " & result(1) & "<br /> Âge : " &result(2))
Comme vous pouvez le voir, c'est aussi simple que cela. La saisie de plusieurs noms de champs donne lieu à un tableau.
Prototype : dbCtrl.C(objRs)
Fonction : Fermer l'objet du jeu d'enregistrements
paramètre:
objRs : Objet Un objet de jeu d'enregistrements sur la page
Exemple:
Dimrs
Définir rs = db.GetRecordDetail("TestTable","Id=123" )
'Votre code ici...
db.C(rs)
Cette fonction a été utilisée dans de nombreux exemples ci-dessus, je ne l'expliquerai donc pas beaucoup. Elle est équivalente à rs.close : set rs = Nothing.
clsDbctrl.rar