Connectez-vous à la base de données. Établir une connexion avec un objet ADO. Equivalent du kit BDE

L'événement se produit avant l'exécution de la commande. Paramètres :
  • Source - une chaîne contenant Instruction SQL ou le nom de la procédure stockée.
  • CursorType - type de curseur pour le Recordset qui sera ouvert. Le type de curseur peut être modifié. Valeurs possibles :
    • adOpenUnspecified(-1) - le type de curseur n'est pas spécifié.
    • adOpenForwardOnly(0) - définit un curseur avant uniquement. Identique à un curseur statique, mais vous ne pouvez faire défiler que les entrées vers l'avant. Cela optimise l'exécution si vous ne devez effectuer qu'un seul passage dans le jeu d'enregistrements.
    • adOpenKeyset(1) - Définit un curseur de jeu de touches. Identique à un curseur dynamique, mais vous ne pouvez pas voir les enregistrements ajoutés par d'autres utilisateurs, bien que les enregistrements supprimés par d'autres utilisateurs ne soient pas disponibles dans votre jeu d'enregistrements. Les modifications apportées aux données par d'autres utilisateurs sont visibles.
    • adOpenDynamic(2) - Définit un curseur dynamique. Les ajouts, modifications et suppressions effectués par d'autres utilisateurs sont visibles ; Tous les types de déplacements via Recordset sont autorisés, à l'exclusion des signets si le fournisseur ne les prend pas en charge.
    • adOpenStatic(3) - Définit un curseur statique. Copie statique d'un jeu d'enregistrements que vous pouvez utiliser pour rechercher des données ou générer des rapports. Les ajouts, modifications ou suppressions effectués par d'autres utilisateurs ne sont pas visibles.
  • LockType - le type de verrou pour le Recordset qui sera ouvert. Valeurs possibles :
    • adLockUnspecified(-1) - le type de verrouillage n'est pas spécifié.
    • adLockReadOnly(1) - lecture seule. Vous ne pouvez pas modifier les données.
    • adLockPessimistic(2) - verrouillage pessimiste. Le fournisseur garantit une édition réussie des enregistrements. L'enregistrement est bloqué immédiatement après le début de l'édition et jusqu'à ce que les enregistrements soient sauvegardés.
    • adLockOptimistic(3) - verrouillage optimiste. Le fournisseur verrouille les enregistrements uniquement lorsque les modifications sont enregistrées, c'est-à-dire lorsque vous appelez la méthode Update().
    • adLockBatchOptimistic(4) - modifications par lots optimistes. Requis pour mode rafale modifications (sauvegarde différée des enregistrements).
  • Options - un entier (long) indiquant les options d'exécution d'une commande ou d'ouverture d'un Recordset.
  • adStatus - détermine le statut de l'événement. Valeurs possibles - voir la description d'un paramètre similaire de l'événement ConnectComplete.
  • pCommand est l'objet Command sur lequel cet événement s'applique.
  • pRecordset est l'objet Recordset auquel cet événement s'applique.
  • pConnection est l'objet Connection sur lequel cet événement s'applique.
L'événement WillExecute peut se produire en raison d'appels à Connection.Execute, Command.Execute ou Recordset.Open. Le paramètre pConnection contient toujours une référence à l'objet Connection. Si l'événement se produit en raison d'un appel à Connection.Execute, les paramètres pRecordset et pCommand seront définis sur Nothing. Si l'événement se produit en raison d'un appel à Recordset.Open, le paramètre pRecordset contiendra une référence à l'objet Recordset et le paramètre pCommand sera défini sur Nothing. Si l'événement se produit en raison d'un appel à Command.Execute, le paramètre pCommand contiendra une référence à l'objet Command et le paramètre pRecordset sera défini sur Nothing.

5.5 Technologie d'accès aux donnéesADO

Technologie d'accès aux données ADO

Principales caractéristiques de la technologie d'accès aux données ADO

Les technologies ODBC et OLE DB sont prises en compte bonnes interfaces transfert de données, mais en tant qu'interfaces logicielles, elles présentent de nombreuses limitations, car sont de bas niveau.

Pour supprimer ces limitations, la technologie ADO (Delphi 5) a été proposée.

La technologie ADO fournit un modèle objet hiérarchique pour accéder à divers fournisseurs de données OLE DB. Modèle objet ADO inclut des objets qui assurent la connexion au fournisseur de données, la création de requêtes SQL sur les données, etc.

Le modèle objet ne contient ni tables ni environnements. Ici les principaux objets sont :

    objet DataSet ;

    un objet Connection qui crée une connexion avec un fournisseur de données ;

    commande d'objet – exécution d'une procédure.

Une particularité de la technologie ADO est la possibilité de l'utiliser dans des applications Internet pour accéder à diverses sources de données.

La technologie ADO et les interfaces OLE DB offrent aux applications un moyen unique d'accéder aux sources de données. différents types(Fig.1).

Riz. 1. Schéma d'accès aux données via ADO

En général, la technologie ADO peut être caractérisée comme la technologie de développement d'applications la plus moderne pour travailler avec des bases de données distribuées à l'aide de la technologie client-serveur.

Composants ADO

Cette technologie est similaire au BDE dans son objectif et ses capacités sont assez similaires. Les composants d'accès aux données utilisés sont également assez similaires aux composants BDE correspondants. Par conséquent, sans entrer dans les détails, nous ne considérerons que les fonctionnalités des composants ADO lorsque nous travaillons avec des bases de données locales. La principale différence réside dans la procédure d'établissement d'une connexion avec une table de base de données.

Tous les composants d'accès aux données utilisant ADO se trouvent sur la page ADO de la palette de composants (Fig. 2).

Riz. 2. Composants ADO

TADOConnexion similaire au composant BDE Base de données T et est utilisé pour spécifier la base de données et le fonctionnement des transactions. Un composant TADOConnection peut être associé à plusieurs composants TADOTable et TADOQuery.

Table TADO est utilisé pour accéder aux magasins de données ADO et présente les informations récupérées dans un tableau.

TADORequête vous permet d'exécuter des requêtes SQL lorsque vous travaillez avec des données via ADO. La connexion au stockage de données s'effectue selon la méthode standard. Le texte de la requête est contenu dans la propriété SQL.

TADOStoredProc vous permet d'accéder aux procédures stockées contenues dans les bases de données. Le nom de la procédure stockée est déterminé par la propriété ProcedureName.

TADODataSet est destiné à représenter un ensemble de données provenant d’un magasin ADO.

Commande TADO Et TADODataSet sont les composants les plus courants avec lesquels travailler avec ADO, mais aussi les plus complexes à utiliser. Les deux composants vous permettent d'exécuter des commandes dans le langage du fournisseur de données (comme on appelle le pilote de base de données dans ADO).

Établir une connexion avec un objet ADO

Dans les composants ADO, la chaîne de connexion ConnectionString : WideString est utilisée pour accéder à la base de données. La ligne de connexion précise les paramètres de connexion à la base de données, tels que l'emplacement et le nom de la base de données, les fournisseurs, les mots de passe requis pour la connexion, etc. Il est assez difficile de se souvenir de la composition d'une chaîne et de sa syntaxe, c'est pourquoi un assistant spécial est utilisé pour la configurer.

La première étape de la définition de la propriété ConnectionString consiste à sélectionner la manière dont la connexion est définie. La base de données peut être spécifiée de deux manières : via un fichier Format Microsoft Data Link (extension UDL) ou en définissant directement les paramètres de connexion (Fig. 3).

Riz. 3. Choisir comment définir la chaîne de connexion

Lors de la définition directe d'une connexion, la valeur de la propriété ConnectionString peut être définie directement dans le champ de saisie de la boîte de dialogue ConnectionString. Cependant, il est généralement plus facile d'utiliser un assistant spécial appelé en cliquant sur un bouton avec des points de suspension à la fin champs de saisie. Cela ouvre la boîte de dialogue Propriétés de liaison de données, dans laquelle vous sélectionnez le type de base de données, son emplacement et les paramètres de connexion (voir Figure 4). Cette boîte de dialogue contient quatre onglets :

    Sous l'onglet Fournisseur, sélectionnez le type de base de données. Les bases de données Microsoft Access sont disponibles via Pilotes Microsoft

Fournisseur Jet OLE DB et fournisseur Microsoft OLE DB pour ODBC. Les bases de données dBase, Paradox et FoxPro sont uniquement disponibles via ODBC ; Boîte de dialogue de définition des paramètres de connexion : sélection d'un fournisseur

    La composition des champs de l'onglet Connexion dépend du type de base de données sélectionné (Fig. 5).

, avec lequel vous sélectionnez le fichier de base de données requis. Dans le deuxième cas, le chemin d'accès à la base de données doit être renseigné manuellement ;

    Riz. 5 – Fenêtre de dialogue DataLinkProperties (onglet Connexion) dans l'onglet Avancé (Fig. 6), il existe des paramètres supplémentaires qui peuvent être utilisés pour définir le niveau d'accès au fichier de base de données et le temps d'attente connexion réseau

(c'est-à-dire le temps au bout duquel la connexion sera considérée comme perdue si le serveur ne répond pas) et le niveau de sécurité de la connexion ;

    Riz. 6 – Boîte de dialogue DataLinkProperties (onglet Avancé) dans l'onglet Tous (Fig. 7), vous pouvez modifier tous les paramètres de pages précédentes et les paramètres dépendant de la connexion sélectionnée qui ne sont pas placés dans l'onglet Connexion. L'édition s'effectue en saisissant les valeurs des paramètres dans forme de texte

. Les descriptions de ces paramètres peuvent être trouvées dans les documents suivants : MSDN Data Access Services, SDK Microsoft Data Access Components (MDAC), Microsoft ActiveX Data Objects (ADO), Référence des programmeurs Microsoft ADO, Utilisation de fournisseurs avec ADO.

Sinon, travailler avec les composants ADOTable et ADOQuery n'est pratiquement pas différent du travail de composants similaires utilisant le mécanisme d'accès BDE.

Annotation: Dans cette conférence, nous parlerons des mécanismes d'accès aux données BDE et ADO et discuterons de leurs avantages et inconvénients. Créons une base de données en utilisant MS Access. Ensuite, nous créerons une application qui fonctionne avec cette base de données en utilisant le mécanisme ADO.

Depuis l’avènement de la technologie des bases de données, les programmeurs ont besoin de mécanismes pour accéder à ces mêmes données. Diverses entreprises ont essayé à leur manière de leur offrir cette opportunité. Par exemple, pour travailler avec des tables de type dBase, un système de gestion de base de données ( SGBD) Tondeuse. Pour les temps système opérateur MS-DOS est une excellente solution. Cependant Tondeuse ne pouvait pas fonctionner avec d'autres types de tables. Et plus les types de données apparaissaient, plus il devenait urgent de développer un outil d’accès universel capable de fonctionner avec tout type de données.

Mécanisme d'accès aux données est un outil logiciel qui permet d'accéder à une base de données et à ses tables. En règle générale, il s'agit d'un pilote sous la forme *. fichiers dll, qui est installé sur le PC du développeur (et du client), et qui est utilisé par le programme pour communiquer avec la base de données.

Comparaison du BDE et de l'ADO

Borland Moteur de base de données(BDE)- le premier développement de ce type de Borland. Ce mécanisme d'accès aux données permet d'accéder aux formats de bases de données locales et de serveurs de fichiers dBase, FoxPro et Paradox, à divers serveurs SQL et à de nombreuses autres sources de données, dont l'accès était pris en charge à l'aide de pilotes ODBC. Par exemple, en utilisant BDE Vous pouvez travailler directement avec des feuilles de calcul MS Excel. Hélas, le mécanisme d'accès BDE considéré comme obsolète même par Borland lui-même. DANS à l'heure actuelle De nombreux outils Delphi sont multiplateformes, c'est-à-dire que les programmes comportant des modifications mineures peuvent être transférés vers d'autres systèmes d'exploitation. Borland Corporation libérée nouvel environnement développement rapide de programmes - Kylix, qui crée des applications pour les systèmes d'exploitation Famille Linux. On dit souvent que Kylix est Delphi pour Linux. C'est vrai : si vous savez programmer en Delphi, vous pouvez également programmer en Kylix. La plupart des outils Delphi ont été hérités de Kylix, mais, hélas, pas BDE. Développement ultérieur ce mécanisme d'accès aux données abandonné par Borland Corporation.

Mais il est trop tôt pour l'enterrer. De nombreux programmeurs utilisent encore cet outil dans le développement d'applications pour petites entreprises. Que puis-je dire ? entreprise chinoise Huawei, qui développe les derniers PBX électroniques pour les zones urbaines et téléphones portables, utilise toujours BDE pour accéder aux paramètres et statistiques de ces PBX ! En plus, BDE a de nombreux simples et opportunités pratiques pour le programmeur, comme la création de tables par programmation.

Facilité d'utilisation BDE Il est difficile de surestimer, mais on ne peut manquer de mentionner les inconvénients. Le principal inconvénient est la répartition des candidatures. Si votre application utilise des composants pour accéder aux données BDE, alors le client qui utilisera votre programme doit l'avoir installé BDE. De plus, si vous avez utilisé des alias (alias de base de données), le client doit également être configuré pour les mêmes alias. Cependant, la création d'un package d'installation à l'aide de utilitaire standard Installer Bouclier Express supprime ce problème. Cet utilitaire vous permet d'activer le mécanisme configuré BDE inclus dans le package d’installation de votre programme. Bien entendu, il y a un prix à payer pour cela. grandes tailles fichier d'installation.

Un autre inconvénient concerne non seulement BDE, mais aussi tout autre universel mécanisme d'accès aux données. L'universalité d'un tel mécanisme implique la complexité de sa mise en œuvre. Le programmeur dispose d'un outil prêt à l'emploi avec lequel il est pratique de travailler, mais cet outil est assez "lourd" - en l'utilisant, vous augmentez considérablement la taille de votre application.

Dans le cours précédent "Introduction à la programmation en Delphi", nous avons abordé le travail avec des bases de données en utilisant BDE. Nous ne reviendrons pas sur ces sujets, même si nous ferons occasionnellement référence à BDE pour démontrer certaines capacités qui ne sont pas disponibles dans d'autres mécanismes d'accès aux données ou qui en diffèrent. Par conséquent, si vous avez manqué ce cours, révisez au moins brièvement le travail avec BDE dans les conférences 29-32.

Objet de données ActiveX (ADO)- Ce mécanisme d'accès aux données, développé par Microsoft Corporation. Pour être plus précis, alors ADO- c'est un complément à la technologie OLEDB, grâce auquel diverses données peuvent être liées Applications Microsoft. Au milieu des années 1990, la technologie s'est considérablement développée COM, Et Société Microsoftà cet égard, a annoncé une transition progressive de l'ancienne technologie ODBCà un nouveau OLEDB. Cependant, la technologie OLEDB assez complexe, l'utilisation de cette technologie se produit sur niveau du système et nécessite beaucoup de connaissances et de travail de la part du programmeur. De plus, la technologie OLEDB très sensible aux erreurs, et plante à la première occasion. Pour faciliter la vie des programmeurs, Microsoft a développé un logiciel supplémentaire couche d'application ADO que nous étudierons dans ce cours.

Selon vos capacités ADO rappelle BDE, même si, bien sûr, c'est plus outil puissant. Borland a développé un ensemble de composants pour accéder ADO et je l'appelais à l'origine ADOExpress. Toutefois, Microsoft s'oppose obstinément à l'utilisation de ses désignations dans les produits développeurs tiers, donc, à partir de Delphi 6, cet ensemble de composants a commencé à être appelé dbGo. Vous pouvez voir ces composants dans l'onglet ADO palettes de composants.

Technologie ADO, ainsi que BDE, indépendant de serveur spécifique DB, a un support comme bases de données locales des données de différents types, ainsi que certaines bases de données client-serveur. Cette technologie présente de nombreux avantages. Les pilotes développés par Microsoft pour son propre usage sont plus fiables que les pilotes tiers. Par conséquent, si vous devez travailler avec des bases de données Accès MS ou pour l'architecture client-serveur, utilisez MS Serveur SQL, puis utilisez ADO sera le plus préférable. De plus, il y a un plus dans la question de la distribution des programmes - dans l'ensemble fenêtres modernes pilotes intégrés ADO. En d’autres termes, votre programme fonctionnera sur n’importe quel PC sur lequel Windows est installé.

Curieusement, le principal inconvénient réside également dans la question de la distribution des programmes. Microsoft fait quelque chose d'assez intelligent. Tous les deux ans, de nouvelles versions de Windows apparaissent. L'utilisateur moyen n'a généralement pas besoin de passer à un nouveau système d'exploitation, d'autant plus que chaque nouveau système devient de plus en plus exigeant en ressources PC. Afin de forcer l'utilisateur à se rendre sur nouvelle version, Microsoft ne manquera pas d'introduire plusieurs nouvelles normes ou technologies incompatibles avec les anciennes. Et pour les anciennes versions, aucune amélioration n'est fournie. Le pauvre utilisateur doit donc serrer les dents et dépenser de l'argent pour de nouvelles versions du système d'exploitation et du package MS Office. Par conséquent, lors de l’utilisation de la technologie ADO vous devez réfléchir à la version de Windows que vous possédez utilisateur final si votre programme fonctionnera sur son PC.

Technologie ADO fait en fait partie Composants d'accès aux données Microsoft (MDAC). Microsoft distribue MDAC en tant que produit séparé, heureusement gratuit. Cependant, seule la dernière version est prise en charge MDAC. Par exemple, Delphi 7 inclut MDAC 2.6. Une fois distribué propres programmes Il faut tenir compte du fait que le client possède probablement déjà ce même MDAC, et la plupart dernière version. Cependant, s'il utilise de vieux Versions Windows(Win95, 98, ME, NT), vous devrez alors vous occuper de l'installation MDACà son ordinateur. S'il a installé Win2000, WinXP ou un système d'exploitation plus récent, alors MDAC il l'a déjà et vous n'avez rien à craindre.

Un autre sérieux inconvénient ADO Le problème est qu’il utilise une technologie COM plutôt lente pour se connecter à la base de données. Si votre base de données contient plusieurs milliers d'enregistrements, la vitesse de travail avec les tables peut devenir des centaines de fois plus lente que si vous utilisiez BDE! Sur les PC modernes dotés de vitesses de processeur allant jusqu'à 2 GHz et plus, ces ralentissements peuvent ne pas être perceptibles, mais travailler avec une énorme base de données sur des PC plus lents deviendra une attente complète.

Les principaux composants avec lesquels nous devons travailler sont TADOConnection (pour la connexion à la base de données), TADOTable (analogique TTable depuis BDE), TADOQuery (analogique TQuery depuis BDE, pour exécuter des requêtes et récupérer un ensemble de données) et TADODataSet (destiné à un ensemble de données obtenu via une requête SQL).

Création d'une base de données MS Access

Bases de données Accès MS présentent de nombreux avantages, les programmeurs préfèrent souvent les utiliser. Tout d'abord, la base de données Accès MS- c'est un fichier. Quel que soit le nombre de tables et d'index qu'il contient, tout est stocké dans un seul fichier. Cela signifie qu'une telle base de données est plus facile à maintenir - transférer vers un nouvel emplacement, créer sauvegardes et ainsi de suite. Un autre avantage est que les noms de champs dans une telle base de données peuvent être donnés en lettres russes.

Le mieux est d'étudier nouveau matériel en pratique. Par exemple, créons une base de données pour le service du personnel d'une entreprise. De quelles données sur les employés avons-nous besoin ? Tout d’abord, nom, prénom et patronyme. Indiquez ensuite le sexe (homme ou femme), état civil(célibataire ou marié), nombre d'enfants. Vous aurez également besoin de votre date de naissance et de votre date d’entrée au travail. Expérience professionnelle en années. Éducation. Conscrit ou pas. Numéros de téléphone où vous pouvez contacter un employé à tout moment. Le poste du salarié et le service (le cas échéant) dans lequel il est inscrit. Et aussi son adresse personnelle. Parallèlement, on tient compte du fait que le salarié n'est pas forcément résident de la ville où il travaille. Et s'il venait travailler d'une autre ville ? Ou même d'un autre pays ? Par conséquent, vous devrez indiquer à la fois le pays et la ville. Que se passe-t-il si vous devez faire une déclaration sur les employés enregistrés en Ukraine, par exemple ? C'est la quantité de données qu'il faudra saisir pour le service RH ! Mais nous les avons un peu plus simplifiés. L'expérience de travail est divisée en générale et continue. Ces données sont prises en compte lors du calcul congé de maladie. Mais pour une base de données de formation, ces détails peuvent être négligés.

Donc, tout d'abord, nous optimisons les données en fonction des règles de trois formes normales . En conséquence, nous obtenons quatre tableaux :


Riz. 2.1.

La table principale ici sera LichData, qui contient des données de base sur l'employé. Il a des connexions relationnelles avec d’autres tables. Le champ "Clé" sera auto-incrémenté, c'est-à-dire qu'il sera automatiquement ajouté par un, nous garantissant caractère unique de la clé. DANS tables subordonnées il existe un champ « Employé » de tout un type qui servira à assurer la communication. De plus, les domaines clés de tables enfants il n'y en aura pas.

La table principale entretient une relation individuelle avec le Doljnost et Adresses, et une relation un-à-plusieurs avec la table Téléphones, car l'employé possède probablement à la fois un téléphone personnel et un téléphone professionnel, et peut-être quelques téléphones portables dans ses poches. Autrement dit, un employé peut avoir plusieurs téléphones.

Maintenant que nous avons décidé des champs et des connexions, il est temps de créer une base de données. Pour ce faire, téléchargez le programme Accès MS.

Si vous n'avez pas de panneau "Création de fichier" sur le côté droit de la fenêtre, sélectionnez la commande "Fichier - Nouveau". Sélectionnez ensuite la commande " Nouveau socle data". Le nom de cette base de données vous sera immédiatement demandé. Créez un dossier dont nous aurons encore besoin pour le nouveau projet, précisez ce dossier et nommez la base de données ok (service RH). Dès que vous cliquez sur le bouton " "Créer", une fenêtre apparaîtra avec cette base de données :


Riz. 2.2.

Nous devons maintenant créer quatre tableaux. Par conséquent, double-cliquez sur la commande « Créer une table en mode conception » et accédez au concepteur. Sur le côté gauche, nous entrons le nom du champ, et en lettres russes. Dans le champ « Type de données », sélectionnez le type, et dans l'onglet « Général », effectuez les paramétrages du champ. La description du champ est facultative. Créons donc les champs :

  1. "Clé". Bien entendu, nous écrivons le nom du champ sans guillemets. Nous sélectionnons le type de données « Compteur », il s'agit d'un type de données auto-incrémenté. Dans les paramètres, assurez-vous que le champ est indexé - Oui (les coïncidences ne sont pas autorisées). Cliquez avec le bouton droit sur ce champ et sélectionnez Champ clé. Une icône de clé apparaîtra à gauche du champ.
  2. "Nom de famille". Le type de champ est texte, taille 25 caractères. Champ indexé - Oui (correspondances autorisées). Après tout, des proches ou des homonymes pourraient se faire prendre !
  3. "Nom". Le type de champ est du texte, taille 25 caractères. Champ indexé - Oui (correspondances autorisées).
  4. "Nom de famille". Le type de champ est du texte, taille 25 caractères. Aucun index n'est nécessaire.
  5. "Sol". Texte, taille 3 caractères. Dans le champ format, indiquez « mari/femmes », bien sûr, sans guillemets.
  6. "Sem_Pozh". Type booléen, format de champ "Oui/Non". Nous indiquerons ici si le salarié est marié.
  7. "Enfants." Type numérique, taille du champ Octet (il est difficile d'imaginer que quelqu'un ait plus de 255 enfants !).
  8. "Date_Naissance". Type de champ - Date/Heure. Sélectionnez le format Date courte. Choisissez ensuite le même format pour le champ Masque. Lorsque vous essayez de sélectionner un masque, il vous sera demandé de confirmer l'enregistrement du tableau. Répondez par l'affirmative, et au lieu du nom de table par défaut « Table 1 », saisissez « LichData », ce sera le nom de notre première table. Après cela, la fenêtre de création d'un masque de saisie apparaîtra. Sélectionner " Format court dates", cliquez sur "Suivant", puis dans la fenêtre "Masque de saisie" tapez "00.00.0000". Nous aurons ainsi un masque sous la forme "jj.mm.aaaa".
  9. "Date_Post". Tout est comme dans le n°8.
  10. "Expérience". Le type de champ est numérique, la taille est en octets.
  11. "Éducation". Texte, taille du champ 30 caractères. Après tout, il peut y avoir ici un long texte, par exemple « enseignement technique supérieur inachevé ».
  12. "Conscrit" Type booléen, format Oui/Non.

En conséquence, nous obtenons l'image suivante.

Erreurs

Objet ADO.Connection, connexion à une base de données depuis VBScript, propriété ConnectionString, génération d'une chaîne de connexion OLE DB à l'aide d'un fichier UDL, gestion des erreurs lors de la connexion à une base de données, collection d'erreurs

Créer un objet Connection est très simple. Par exemple, pour vous connecter à la base de données Northwind sur un serveur SQL nommé LONDON, vous pouvez utiliser un code tel que

Dim cn

cn.Provider = "SQLOLEDB"

& "InitialCatalogue= Vent du Nord"

CN.Ouvrir

En principe, cela suffit amplement pour créer un objet de connexion fonctionnel (pour le vérifier, vous pouvez par exemple exécuter la commande Wscript.ÉchoCN.État avant et après ouverture). Cependant, il est logique de parler plus en détail des différentes propriétés et méthodes de cet objet.

propriété Fournisseur définit le pilote qui sera utilisé pour se connecter à la base de données. Il existe deux types de pilotes de connexion couramment utilisés : les pilotes OLE DB et ODBC. Si possible, vous devez utiliser une connexion OLE DB - plus manière moderne, ce qui est beaucoup plus rapide. La propriété Provider doit être spécifiée uniquement lors de la connexion via OLE DB ; lors de la connexion via ODBC, tous les paramètres nécessaires sont transmis à l'aide de la propriété ConnectionString. Les valeurs des propriétés du fournisseur pour la connexion à différentes sources de données peuvent ressembler à ceci :

o "Microsoft .Jet .OLEDB .4.0" - pour les connexions aux fichiers Access et Excel et à d'autres sources de données basées sur Jet ;

o "SQLOLEDB" - pour les connexions à SQL Server (comme dans l'exemple)

o "MSDAORA .1" - pour les connexions au serveur Oracle ;

o "ADsDSOObject" - pour se connecter à la base de données du service d'annuaire Windows.

propriété Chaîne de connexion- la propriété principale de l'objet Connection. Il définit les paramètres de connexion à la source (sa valeur est un ensemble de paramètres séparés par un point-virgule, l'ordre de leur signification n'a pas d'importance). Dans notre exemple, nous avons passé quatre valeurs de paramètres - ID utilisateur - identifiant utilisateur (cela signifie que nous utilisons une connexion SQL Server), Mot de passe - mot de passe et Source de données - le nom du serveur de base de données, Catalogue initial - le nom de la base de données sur ce serveur. Pour passer une ConnectionString vous pouvez également utiliser la méthode Ouvrir. Si utilisé Connexion Windowsà SQL Server, le code de connexion pourrait ressembler à ceci :

Dim cn

Définir cn = CreateObject("ADODB.Connection")

cn.Open "Provider=SQLOLEDB;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=Northwind;Data Source=london1"

Lors de la connexion à un fichier Access ou Excel, la chaîne de connexion peut ressembler à ceci :

cn.Ouvrez "Provider=Microsoft.Jet.OLEDB.4.0; Source de données=D:\Northwind.mdb"

Le moyen le plus simple de créer une chaîne de connexion consiste à utiliser un fichier UDL. Pour ce faire, vous devez créer un compte régulier fichier texte, renommez-le pour que son extension ressemble à .udl (depuis le lien de données utilisateur), double-cliquez et configurez les paramètres de connexion. Ensuite, vous pouvez ouvrir ce fichier dans le Bloc-notes et copier la ligne générée. Vous pouvez également utiliser un lien vers le fichier UDL créé dans la chaîne de connexion :

cn.ConnectionString = "Nom du fichier = d:\mylink.udl"

Cette méthode est plus recommandée (surtout si les fichiers UDL se trouvent dans un répertoire réseau masqué en lecture seule) car elle permet d'effectuer des modifications de manière centralisée dans toutes les applications si la source de données est déplacée vers un autre serveur.

Pour se connecter via ODBC, il est recommandé de créer au préalable une source Données ODBC(via Panneau de configuration -> Sources de données (ODBC), puis générez une chaîne de connexion de la même manière à l'aide d'un fichier UDL, en sélectionnant le pilote Fournisseur Microsoft OLE DB pour pilotes ODBC.

· méthode Ouvrir vous permet d'ouvrir une connexion à la base de données (et de vérifier sa fonctionnalité). Il peut prendre une chaîne de connexion, un nom d'utilisateur et un mot de passe comme paramètres.

· méthode Fermer permet de fermer la connexion (l'objet de connexion n'est pas supprimé de la mémoire). Pour vous débarrasser complètement de cet objet, vous pouvez utiliser le code

cn.Fermer

Définir cn = Rien

ou juste EnsembleCN= Rien - la connexion sera automatiquement déconnectée.

Il existe de nombreuses autres propriétés et méthodes disponibles pour cet objet, mais elles ne seront pas abordées ici (par Informations Complémentaires vous pouvez vous référer à de la documentation ou à des tutoriels Cours Microsoft). La seule propriété que vous devez réellement prendre en compte est la propriété Errors, qui renvoie une collection d'objets Error. Les erreurs lors de l'établissement ou de l'exploitation d'une connexion surviennent très souvent (le mot de passe ou le nom d'utilisateur a été mal saisi, l'utilisateur ne dispose pas de suffisamment de droits pour se connecter, il est impossible d'accéder à l'ordinateur via le réseau, etc.), il est donc fortement Il est recommandé d'implémenter la gestion des erreurs dans le programme. La manière la plus simple d'implémenter un gestionnaire d'erreurs pourrait ressembler à ceci :

FaibleCN

Définir cn = CreateObject("ADODB.Connection")

cn.Provider = "SQLOLEDB"

cn.ConnectionString = "ID utilisateur=SA;Mot de passe=mot de passe;Source de données = LONDRES1;" _

& "Catalogue initial = Northwind"

En cas d'erreur, GoTo CnErrorHandler

cn.Ouvrir

Quitter le sous-marin

CnErrorHandler :

Pour chaque ADOErr dans cn.Errors

Debug.Print ADOErr.Number

Debug.Print ADOErr.Description

Suivant

FinSous

En pratique, les erreurs typiques de de cette connexion(Non Accéder au fichier, erreur de mot de passe ou d'identifiant lors de la connexion à SQL Server, aucun droit, fichier ouvert en mode exclusif, etc.). et l'utilisateur est invité à corriger l'erreur.

Le plus propriétés importantes Objet ADOError :

· Description- description de l'erreur. Généralement le plus informations importantes est contenu exactement dans la description.

· Nombre- numéro d'erreur. Il est pratique d'effectuer une recherche par numéro dans la base de connaissances et sur Internet.

· Source- source d'erreur. Ces informations ne sont utiles que si la collection Errors peut contenir des erreurs provenant de différentes sources.

· État SQL Et Erreur native- des informations sur une erreur survenue à partir d'une source de données compatible SQL.

Dernière mise à jour : 31/10/2015

Pour nous connecter à la base de données, nous devons créer et utiliser un objet SqlConnection :

Utilisation du système ; en utilisant System.Data.SqlClient ; espace de noms AdoNetConsoleApp ( classe Programme ( vide statique Main(string args) ( string connectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=usersdb;Integrated Security=True"; // Créer une connexion SqlConnection connection = new SqlConnection(connectionString); try ( // Ouvrir la connexion connection.Open(); Console.WriteLine("La connexion est ouverte"); catch (SqlException ex) ( Console.WriteLine(ex.Message); ) enfin ( // ferme la connexion connection.Close(); Console.WriteLine( "La connexion est fermée..." ) Console.Read( ) ) )

Le constructeur de l'objet SqlConnection reçoit une chaîne de connexion qui initialise l'objet. Pour utiliser cet objet et se connecter à la base de données, nous devons exécuter sa méthode Open(), et après avoir fini de travailler avec la base de données, nous devons appeler sa méthode Close() pour fermer la connexion. Si des erreurs se produisent, la connexion est fermée dans le bloc final.

Comme méthode alternative vous pouvez utiliser la construction using, qui ferme automatiquement la connexion :

Static void Main(string args) ( string connectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=usersdb;Integrated Security=True"; using (SqlConnection connection = new SqlConnection(connectionString)) ( connection.Open(); Console .WriteLine("La connexion est ouverte"); Console.WriteLine("La connexion est fermée...");

Connexion asynchrone

Pour créer connexion asynchrone doit être utilisé méthode asynchrone OpenAsync() :

Programme de classe ( static void Main(string args) ( ConnectWithDB().GetAwaiter(); ) private static async Task ConnectWithDB() ( string connectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=usersdb;Integrated Security=True" ; using (SqlConnection connection = new SqlConnection(connectionString)) ( wait connection.OpenAsync(); Console.WriteLine("La connexion est ouverte"); ) Console.WriteLine("La connexion est fermée..." ) )

Obtenir des informations de connexion

L'objet SqlConnection possède un certain nombre de propriétés qui permettent d'obtenir des informations sur la connexion :

String connectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=usersdb;Integrated Security=True"; using (SqlConnection connection = new SqlConnection(connectionString)) ( connection.Open(); Console.WriteLine("La connexion est ouverte"); // Imprimer les informations sur la connexion Console.WriteLine("Propriétés de connexion:"); Console.WriteLine (" \tConnection String : (0)", connexion.ConnectionString); Console.WriteLine("\tDatabase : (0)", connexion.Database("\tServer : (0)", connection.DataSource); ) ; Console.WriteLine("\tServerVersion : (0)", connexion.ServerVersion); Console.WriteLine("\tState : (0)", connexion.WriteLine("\tWorkstationld : (0)" , connexion.WorkstationId) ; ) Console.WriteLine("Connexion fermée...");

Sortie de la console dans mon cas :

Erreurs possibles et leurs solutions

Lors de la connexion à une base de données, vous pouvez rencontrer un certain nombre d'erreurs, l'une des plus courantes est la suivante :

Exception non gérée : System.ArgumentException : mot clé non pris en charge...

Cette erreur est due à une spécification incorrecte des paramètres de la chaîne de connexion, et la manière dont nous définissons la chaîne de connexion n'a pas d'importance - dans le code ou dans un fichier de configuration. Le message d'erreur, comme d'habitude, indique quel paramètre est mal spécifié et, dans ce cas, il doit être corrigé.

Une autre erreur courante indique que cette base de données n'existe pas ou au moins il n'existe pas de base de données similaire pour l'utilisateur actuel :

Impossible d'ouvrir la base de données "nom de la base de données" demandée par la connexion. La connexion a échoué. Échec de la connexion pour l'utilisateur "nom_utilisateur"

Dans ce cas, vous devez vous assurer qu'il existe une base de données du même nom sur le serveur, et si c'est le cas, vérifiez s'il existe un accès pour utilisateur donnéà cette base de données.

Et une autre erreur courante :

Un élément lié au réseau ou spécifique à une instance une erreur s'est produite lors de l'établissement d'une connexion à SQL Server. Le serveur n'était pas

Dans ce cas, SQL Server n'est généralement pas en cours d'exécution. Et il doit être démarré ou redémarré via le panneau des services.

Il se peut également que la chaîne de connexion indique mauvais nom serveur, ou MS SQL Server n'est pas installé du tout.



Des questions ?

Signaler une faute de frappe

Texte qui sera envoyé à nos rédacteurs :