En tant que passionné d'ASP, j'utilise souvent des objets ADO dans les pages ASP pour faire fonctionner des bases de données ODBC. Je pense qu'il est très pratique d'utiliser ASP pour créer des systèmes d'application WEB. Bien que dans ma carrière de programmeur, l'auteur préfère les produits de la série Borland et soit un peu répugnant aux produits Microsoft, l'exception est ASP. Un jour, j'ai eu une idée : l'objet ADO est un objet OLE standard. Ce serait génial si ADO pouvait être utilisé pour faire fonctionner la base de données dans une application DELPHI. Surtout lorsque vous utilisez DELPHI comme application de base de données réseau, si le site WEB est un site WINNT et prend en charge les pages ASP, vous pouvez utiliser des objets ADO pour accéder à la base de données ODBC sans télécharger un BDE aussi volumineux sur le site, afin que vous puissiez pleinement utiliser le avantages de la programmation de DELPHI et ASP pour améliorer ISAPI/NSAPI/CGI.
----Après la programmation et les tests, vous pouvez utiliser avec succès les objets ADO pour accéder à la base de données ODBC dans DELPHI. Je vais maintenant écrire l'expérience et la partager avec vous. Laissez-nous accéder à la base de données ODBC.
---- Dans DELPHI 32 bits, vous pouvez déclarer une variable variante (telle qu'AVariant), puis créer un objet OLE via CreateOleObject, tel que AVariant:=CreateOleObject('ADODB.Connection') pour obtenir une instance de objet de connexion à la base de données, vous pouvez ensuite utiliser les méthodes et les propriétés de l'objet pour faire fonctionner la base de données ODBC.
----Ce qui suit est une brève introduction aux objets ADO utilisés pour accéder aux bases de données ODBC ainsi qu'à leurs méthodes et propriétés.
---- 1. Objet de connexion à la base de données (ADODB.Connection)
---- Cet objet est utilisé pour établir une connexion avec la base de données ODBC, et toutes les opérations sur la base de données sont effectuées via cette connexion.
---- L'objet de connexion à la base de données ADODB.Connection fonctionne comme l'objet TDatabase dans Delphi.
---- La méthode pour établir un objet de connexion est (AConnection est une variable de type Variant) :
---- AConnection:=CreateOleObject('ADODB.Connection')
---- La méthode utilisée pour établir une connexion est Open, et la syntaxe d'utilisation est (prenons l'objet AConnection comme exemple) :
---- AConnection.Open(ConnectionString, UserId, PassWord)
----Les trois paramètres sont tous de type chaîne, où UserId et Password sont le nom d'utilisateur et le mot de passe, utilisés pour accéder
---- Utilisé dans la base de données, il peut être omis car le nom d'utilisateur et le mot de passe de l'utilisateur peuvent également être spécifiés dans ConnectionString. ConnectionString est une chaîne utilisée pour décrire les informations de la source de données ODBC. Son format est :
'PRvider=Nom du fournisseur ;DSN=NomDSN;DRIVER=pilote=serveur ; DATABASE=base de données UID=utilisateur ;
---- dans:
---- Fournisseur : fournisseur de données, MSDASQL par défaut, Microsoft OLEDB, généralement omis
---- DSN : La source de données du système OBDC (DSN) correspondant à la base de données à ouvrir, qui est un paramètre facultatif.
---- DRIVER : Le nom du pilote utilisé pour la base de données à ouvrir, tel que l'accès correspondant
----Le pilote Microsoft Access (*.mdb) est un paramètre facultatif
---- SERVEUR : Le nom du serveur sur lequel se trouve la base de données à ouvrir. Il est disponible sur cette machine (local) et est un paramètre facultatif.
---- DATABASE : Le nom de la base de données à ouvrir, un paramètre optionnel
---- UID : Le nom d'utilisateur, utilisé pour accéder à la base de données, est un paramètre facultatif
----PWD : Le mot de passe de l'utilisateur, utilisé pour accéder à la base de données, est un paramètre facultatif
---- Les paramètres ci-dessus sont tous des paramètres facultatifs, mais des informations suffisantes doivent être fournies pour décrire une source de données système.
---- Si un DSN système ODBC a été défini, nommé MyDsn, vous pouvez utiliser l'instruction suivante pour établir une connexion à la base de données :
----
AConnection.Open('DSN=MonDsn');
---- Afin d'éviter les erreurs d'exécution de l'application lorsque le DSN n'existe pas ou que ses paramètres sont modifiés par d'autres, vous pouvez utiliser ADODB.Connection pour créer une source de données ODBC temporaire. Cela peut garantir que les paramètres du DSN système. que nous utilisons sont corrects. L'instruction suivante peut créer un DSN système ODBC temporaire, correspondant à une base de données ACCESS, le chemin est
C:Inetpubwwwrootest.mdb AConnection.open('Driver={Microsoft Access Driver (*.mdb)};DBQ=C:inetpubwwwrootest.mdb')
---- Après avoir établi une ADODB.Connection, si vous n'avez pas besoin de renvoyer les résultats de l'opération (tels que suppression, modification, mise à jour, etc.), vous pouvez effectuer des opérations SQL normales sur la base de données. À ce stade, utilisez-en une autre. méthode Exécuter de ADODB.Connection. La syntaxe d'utilisation est :
AConnection.Execute( strSQL);
---- Parmi eux, strSQL est l'instruction SQL pour effectuer l'opération. Par exemple, l'opération de suppression peut être : supprimer de wfjcommu Utilisez AConnection.Close pour fermer une connexion à la base de données.
---- 2. Objet ensemble de données (ADODB.RecordSet)
---- Si vous souhaitez effectuer des opérations de requête et renvoyer les résultats de la requête, ou si vous souhaitez utiliser la table de données plus facilement, vous devez utiliser l'objet ensemble de données.
---- L'objet ensemble de données ADODB.RecordSet fonctionne comme un objet TTable ou TQuery dans Delphi.
---- La méthode pour créer un objet ensemble de données est (ARecordSet est une variable de type Variant) :
----
ARecordSet :=CreateOleObject('ADODB.RecordSet')
---- La méthode d'obtention des données de la table de données est la méthode Open. La méthode d'utilisation spécifique est :
ARecordSet.Open( strCommand,ActiveConnection,intCursorType,intLockType,intCommandType);
---- Parmi eux : strCommand : string, qui est un paramètre de commande. Il peut s'agir d'un nom de table, d'une instruction SQL ou d'un nom de procédure stockée (StoredProc) sur le serveur. Le paramètre spécifique intCommandType doit être spécifié.
---- ActiveConnection : La connexion à la base de données à utiliser est un objet ADODB.Connection.
---- intCursorType : entier long, type de curseur de l'ensemble de données, paramètres facultatifs, veuillez consulter les commentaires dans le programme.
---- intLockType : entier long, le type de verrouillage de la table de données, paramètres facultatifs, veuillez vous référer aux commentaires dans le programme.
---- intCommandType : entier long, le type de paramètre de commande, utilisé pour indiquer le rôle de strCommand. Vous pouvez spécifier strCommand en tant que commande (telle qu'une instruction SQL) ou table de données (TTable) ou procédure stockée (StoredProc). Pour les paramètres facultatifs, veuillez consulter les commentaires dans le programme.
---- Si vous exécutez une requête SQL, vous pouvez utiliser l'instruction suivante :
ARecordSet.Open('Select * from wfjcommu',adOpenStatic,adLockOptimistic,adCmdText);
---- Les autres propriétés et méthodes courantes comparées à TTable et TQuery sont les suivantes (voir le fichier d'aide ASP pour plus de détails) :
eof, bof : eof, bof. MoveFirst, MoveLast : First, LastMovePrevious, MoveNext : Prior, NextMove : MoveByAddNew : appendUpdate : PostClose : fermer
---- Supprimer plus Mettre à jour : supprimer, toutes les modifications apportées à la table de données doivent utiliser Mise à jour pour rendre l'opération efficace, ce qui est différent de Delphi
Champs[FieldNo]:Champs[FieldNo]Champs['FieldName']:FieldByName('FieldName')
---- 3. Autres objets courants (objets correspondant à Delphi) :
----
ADODB.Field : TFieldADODB.Parameter : TParaADODB.Error : EDBEngineErrorADODB.Command : Aucun ADODB.Property : Aucun
---- Jetons un coup d'œil à un exemple d'application. Il est préférable d'entendre ce que disent les autres plutôt que de voir l'exemple réel. Dans cet exemple, nous montrerons comment utiliser les objets ADO pour interroger, ajouter des enregistrements, modifier des enregistrements et supprimer des enregistrements dans une table de données. Veuillez vous référer aux commentaires du programme pour une utilisation spécifique. Si vous avez une certaine expérience en programmation de bases de données Delphi, je pense que ce n'est pas difficile à comprendre.
---- Dans notre exemple, la base de données utilisée est Test.MDB. Il existe une table de données appelée wfjcommu, qui comporte cinq champs : AName, Portable, Tel, BP et PostAddress, qui représentent le nom, le numéro de téléphone portable, le numéro de téléphone. , et le numéro du téléavertisseur respectivement et l'adresse de correspondance.
----
procédure TForm1.Button1Click(Expéditeur : TObject);{*************************************** *** ****************
---- Utilisez ADO pour faire fonctionner la base de données ODBC. Dans ce programme, une source de données système ODBC temporaire sera créée, pointant vers une base de données MsAccess, puis les tables de données qu'elle contient seront affichées, ajoutées, modifiées, supprimées et interrogées. Remarque : Veuillez cliquer sur Utilisations. La déclaration contient l'unité ComObj.
************************************************** * ***}const{ Quelques déclarations de constantes, veuillez consulter adovbs.inc pour plus de détails }{ ---- Description de la constante de CommandType---- } adCmdUnknown = 0008;//Unknown, doit être jugé par le système, lent , valeur par défaut adCmdText = 0001 ; // Instruction de commande telle qu'une instruction SQL adCmdTable = 0002;//Nom de la table de données adCmdStoredProc = 0004;//Nom de la procédure stockée {---- Description constante de CursorType---- } adOpenForwardOnly = 0;//Accessible uniquement dans un sens, de l'avant vers l'arrière, ce qui est la valeur par défaut adOpenKeyset = 1 ; //Les modifications apportées aux données par d'autres utilisateurs sont visibles, mais les ajouts et suppressions par d'autres utilisateurs ne sont pas visibles adOpenDynamic = 2;//L'ajout, la modification et la suppression de données par d'autres utilisateurs sont visibles adOpenStatic = 3;//L'ajout, la modification et la suppression de données par d'autres utilisateurs ne sont pas visibles {---- Description constante de LockType---} adLockReadOnly = 1; //Lecture seule, la valeur par défaut adLockPessimistic = 2 //Lors de la modification, verrouiller selon un seul enregistrement adLockOptimistic =; 3;//Verrouiller par un seul enregistrement lors de la mise à jour après modification adLockBatchOptimistic = 4;//Verrouiller l'enregistrement lors de la mise à jour par lots var AConnection, ARecordSet: variant; longintTemp: integer; strTemp: intIndex: integer;begin {Create a Temporary Source de données ODBC, pointant vers une base de données MsAccess et utilisant ce DSN pour établir une connexion à la base de données} AConnection := CreateOleObject('ADODB.Connection'); AConnection.Open('Driver={Microsoft Access Driver (*.mdb)};DBQ=C:inetpubwwwrootest'); {Créer un objet d'ensemble de données et extraire les données de la table de données} ARecordSet := CreateOleObject('ADODB.RecordSet'); ARecordSet.open( 'wfjcommu',AConnection, adOpenStatic,adLockOptimistic,adCmdTable ); memo1.lines.clear; memo1.lines.add('********Le contenu original de la table de données est le suivant********'); Afficher le nom de domaine de chaque champ} strTemp := '; pour intIndex := 0 à ARecordSet.Fields.count - 1 do strTemp := strTemp + ARecordSet.Fields[intIndex].name+';'; memo1.lines.add( strTemp ); {Afficher le contenu de chaque champ} alors que ARecordSet.eof ne commence pas strTemp := '; . count - 1 faire strTemp := strTemp + ARecordSet.Fields [intIndex].value+';';memo1.lines.add( strTemp ); ARecordSet.MoveNext;//Passer à la ligne suivante, fin suivante; {Ajouter un enregistrement} ARecordSet.AddNew;//Ajouter, Ajouter ARecordSet.Fields [ 'AName'] := '1'; //Accès à ARecordSet.Fields['Portable'] en utilisant FieldByName := '2'; ARecordSet.Fields(2) := '3'; //Accès ARecordSet.Fields(3) := '4'; ARecordSet.Fields(4) := '5' sous forme de champs[index] ; ARecordSet.Update;//Mettre à jour, publier ARecordSet.MoveFirst;//Déplacer vers le premier élément, en premier memo1.lines.add('********Le contenu de la table de données après l'ajout d'un enregistrement est le suivant********'); {afficher le contenu de chaque champ} while not ARecordSet .eof commence strTemp := ';for intIndex := 0 à ARecordSet.count - 1 fait strTemp := strTemp + ARecordSet.Fields[intIndex].value+';';memo1.lines.add( strTemp ); ARecordSet.MoveNext; //Déplacer vers l'enregistrement suivant, fin suivante; {Modifier le dernier enregistrement} ARecordSet.MoveLast; ARecordSet.Fields['ANam'] := '11'; 'Portable'] := '22'; ARecordSet.Fields(2) := '33'; //Accédez à ARecordSet.Fields(3) en tant que Fields[index] := '44'; ARecordSet.Fields(4) := '55';//Mise à jour, publiez ARecordSet.MoveFirst;//Déplacez-vous vers le premier élément, Premier memo1.lines.add('********Le contenu de la table de données après modification du dernier enregistrement est le suivant************'); le contenu de chaque champ } alors que non ARecordSet.eof do start strTemp := ';for intIndex := 0 à ARecordSet.Fields.count - 1 do strTemp := strTemp + ARecordSet.Fields[intIndex].value+';';memo1.lines.add( strTemp ); ARecordSet.MoveNext;//Passer à l'enregistrement suivant, Fin suivante {Supprimer le dernier enregistrement} ARecordSet.MoveLast;//Déplacer vers la dernière ligne, Last ARecordSet.delete;//Supprimer, supprimer ARecordSet.Update;//Mise à jour, non nécessaire dans Delphi ARecordSet.MoveFirst;//Déplacer vers la première ligne, First memo1.lines .add ('********Le contenu de la table de données après la suppression du dernier enregistrement est le suivant********'); {Afficher le contenu de chaque champ} while not ARecordSet.eof commence strTemp := '; pour intIndex := 0 à ARecordSet.Fields.count - 1 faire strTemp := strTemp + ARecordSet Fields[intIndex].value+';';memo1.lines.add( strTemp );/ /Passer à la barre suivante, Fin suivante ; ARecordSet.Close;{Fermer l'ensemble de données} {Utilisez l'instruction SQL pour interroger, interrogez les enregistrements nommés "Zhang San"} {Notez que dans l'instruction SQL, la chaîne doit être placée entre guillemets simples} ARecordSet.open( 'select * from wfjcommuwhere AName = 'Zhang San' ', AConnection, adOpenStatic, adLockOptimistic, adCmdText ); memo1.lines.add('********Le contenu de Zhang San est le suivant********'); memo1.lines.add( 'Total '); + IntToStr ( ARecordSet.RecordCount ) + 'matching records' ); {afficher le contenu de chaque champ} alors que ARecordSet.eof do begin strTemp := '; = strTemp + ARecordSet.Fields [intIndex].value+';';memo1.lines.add( strTemp ); ARecordSet.MoveNext;//Passer à la barre suivante, fin suivante; {Fermer l'ensemble de données et la connexion à la base de données} AConnection.close;end;