CDaoDatabase, classe
Représente une connexion à une base de données Access à l’aide d’objets DAO (Data Access Objects).
Remarque
L’objet d’accès aux données (DAO) est pris en charge via Office 2013. DAO 3.6 est la version finale et est obsolète.
Syntaxe
class CDaoDatabase : public CObject
Membres
Constructeurs publics
Nom | Description |
---|---|
CDaoDatabase ::CDaoDatabase | Construit un objet CDaoDatabase . Appelez Open pour connecter l’objet à une base de données. |
Méthodes publiques
Nom | Description |
---|---|
CDaoDatabase ::CanTransact | Retourne une valeur différente de zéro si la base de données prend en charge les transactions. |
CDaoDatabase ::CanUpdate | Renvoie une valeur différente de zéro si l’objet CDaoDatabase est pouvant être mis à jour (pas en lecture seule). |
CDaoDatabase ::Close | Ferme la connexion de base de données. |
CDaoDatabase ::Create | Crée l’objet de base de données DAO sous-jacent et initialise l’objet CDaoDatabase . |
CDaoDatabase ::CreateRelation | Définit une nouvelle relation entre les tables de la base de données. |
CDaoDatabase ::D eleteQueryDef | Supprime un objet querydef enregistré dans la collection QueryDefs de la base de données. |
CDaoDatabase ::D eleteRelation | Supprime une relation existante entre les tables de la base de données. |
CDaoDatabase ::D eleteTableDef | Supprime la définition d’une table dans la base de données. Cela supprime la table réelle et toutes ses données. |
CDaoDatabase ::Execute | Exécute une requête d’action. L’appel Execute d’une requête qui retourne les résultats lève une exception. |
CDaoDatabase ::GetConnect | Retourne la chaîne de connexion utilisée pour connecter l’objet CDaoDatabase à une base de données. Utilisé pour ODBC. |
CDaoDatabase ::GetName | Retourne le nom de la base de données en cours d’utilisation. |
CDaoDatabase ::GetQueryDefCount | Retourne le nombre de requêtes définies pour la base de données. |
CDaoDatabase ::GetQueryDefInfo | Retourne des informations sur une requête spécifiée définie dans la base de données. |
CDaoDatabase ::GetQueryTimeout | Retourne le nombre de secondes après lesquelles les opérations de requête de base de données expirent. Affecte toutes les opérations d’ouverture, d’ajout, de mise à jour et de modification ultérieures et d’autres opérations sur des sources de données ODBC (uniquement) telles que Execute les appels. |
CDaoDatabase ::GetRecordsAffected | Retourne le nombre d’enregistrements affectés par la dernière mise à jour, la modification ou l’opération d’ajout ou par un appel à Execute . |
CDaoDatabase ::GetRelationCount | Retourne le nombre de relations définies entre les tables de la base de données. |
CDaoDatabase ::GetRelationInfo | Retourne des informations sur une relation spécifiée définie entre les tables de la base de données. |
CDaoDatabase ::GetTableDefCount | Retourne le nombre de tables définies dans la base de données. |
CDaoDatabase ::GetTableDefInfo | Retourne des informations sur une table spécifiée dans la base de données. |
CDaoDatabase ::GetVersion | Retourne la version du moteur de base de données associé à la base de données. |
CDaoDatabase ::IsOpen | Retourne une valeur différente de zéro si l’objet CDaoDatabase est actuellement connecté à une base de données. |
CDaoDatabase ::Open | Établit une connexion à une base de données. |
CDaoDatabase ::SetQueryTimeout | Définit le nombre de secondes après lesquelles les opérations de requête de base de données (sur les sources de données ODBC uniquement) expirent. Affecte toutes les opérations d’ouverture, d’ajout, de mise à jour et de suppression suivantes. |
Membres de données publics
Nom | Description |
---|---|
CDaoDatabase ::m_pDAODatabase | Pointeur vers l’objet de base de données DAO sous-jacent. |
CDaoDatabase ::m_pWorkspace | Pointeur vers l’objet CDaoWorkspace qui contient la base de données et définit son espace de transaction. |
Notes
Pour plus d’informations sur les formats de base de données pris en charge, consultez la fonction membre GetName . Vous pouvez avoir un ou plusieurs CDaoDatabase
objets actifs à la fois dans un « espace de travail » donné, représenté par un objet CDaoWorkspace . L’espace de travail gère une collection d’objets de base de données ouverts, appelée collection Databases.
Utilisation
Vous pouvez créer implicitement des objets de base de données lorsque vous créez des objets recordset. Toutefois, vous pouvez également créer des objets de base de données explicitement. Pour utiliser une base de données existante explicitement avec CDaoDatabase
, effectuez l’une des opérations suivantes :
Construisez un
CDaoDatabase
objet, en passant un pointeur à un objet CDaoWorkspace ouvert.Ou construisez un
CDaoDatabase
objet sans spécifier l’espace de travail (MFC crée un objet d’espace de travail temporaire).
Pour créer un Microsoft Jet (. Base de données MDB, construisez un CDaoDatabase
objet et appelez sa fonction créer un membre. N’appelez Open
pas après Create
.
Pour ouvrir une base de données existante, construisez un CDaoDatabase
objet et appelez sa fonction Open member.
Toutes ces techniques ajoutent l’objet de base de données DAO à la collection Databases de l’espace de travail et ouvre une connexion aux données. Lorsque vous construisez ensuite des objets CDaoRecordset, CDaoTableDef ou CDaoQueryDef pour fonctionner sur la base de données connectée, transmettez les constructeurs pour ces objets un pointeur vers votre CDaoDatabase
objet. Lorsque vous avez terminé d’utiliser la connexion, appelez la fonction Membre Close et détruisez l’objet CDaoDatabase
. Close
ferme tous les jeux d’enregistrements que vous n’avez pas encore fermés.
Transactions
Le traitement des transactions de base de données est fourni au niveau de l’espace de travail : consultez les fonctions membres BeginTrans, CommitTrans et Rollback de la classe CDaoWorkspace
.
Connexions ODBC
La méthode recommandée pour utiliser des sources de données ODBC (Open Database Base Connectivity) consiste à attacher des tables externes à une base de données Microsoft Jet (.MDB
).
Collections
Chaque base de données conserve ses propres collections d’objets tabledef, querydef, recordset et relation. La classe CDaoDatabase
fournit des fonctions membres pour manipuler ces objets.
Remarque
Les objets sont stockés dans DAO, et non dans l’objet de base de données MFC. MFC fournit des classes pour les objets tabledef, querydef et recordset, mais pas pour les objets de relation.
Hiérarchie d'héritage
CDaoDatabase
Spécifications
En-tête : afxdao.h
CDaoDatabase ::CanTransact
Appelez cette fonction membre pour déterminer si la base de données autorise les transactions.
BOOL CanTransact();
Valeur de retour
Différent de zéro si la base de données prend en charge les transactions ; sinon 0.
Notes
Les transactions sont gérées dans l’espace de travail de la base de données.
CDaoDatabase ::CanUpdate
Appelez cette fonction membre pour déterminer si l’objet autorise les CDaoDatabase
mises à jour.
BOOL CanUpdate();
Valeur de retour
Différent de zéro si l’objet autorise les CDaoDatabase
mises à jour ; sinon 0, indiquant que vous avez passé TRUE dans bReadOnly lorsque vous avez ouvert l’objet CDaoDatabase
ou que la base de données elle-même est en lecture seule. Consultez la fonction Ouvrir un membre.
Notes
Pour plus d’informations sur la mise à jour de la base de données, consultez la rubrique « Updatable Property » dans L’aide de DAO.
CDaoDatabase ::CDaoDatabase
Construit un objet CDaoDatabase
.
CDaoDatabase(CDaoWorkspace* pWorkspace = NULL);
Paramètres
pWorkspace
Pointeur vers l’objet CDaoWorkspace
qui contiendra le nouvel objet de base de données. Si vous acceptez la valeur par défaut de NULL, le constructeur crée un objet temporaire CDaoWorkspace
qui utilise l’espace de travail DAO par défaut. Vous pouvez obtenir un pointeur vers l’objet de l’espace de travail via le membre de données m_pWorkspace .
Notes
Après avoir construit l’objet, si vous créez un microsoft Jet (. Base de données MDB, appelez la fonction Créer un membre de l’objet. Si vous ouvrez plutôt une base de données existante, appelez la fonction Open member de l’objet.
Lorsque vous avez terminé avec l’objet, vous devez appeler sa fonction de membre Close , puis détruire l’objet CDaoDatabase
.
Vous trouverez peut-être pratique d’incorporer l’objet CDaoDatabase
dans votre classe de document.
Remarque
Un CDaoDatabase
objet est également créé implicitement si vous ouvrez un objet CDaoRecordset sans passer de pointeur à un objet existant CDaoDatabase
. Cet objet de base de données est fermé lorsque vous fermez l’objet recordset.
CDaoDatabase ::Close
Appelez cette fonction membre pour vous déconnecter d’une base de données et fermez tous les jeux d’enregistrements ouverts, tablesdefs et querydefs associés à la base de données.
virtual void Close();
Notes
Il est recommandé de fermer ces objets vous-même avant d’appeler cette fonction membre. La fermeture d’un CDaoDatabase
objet le supprime de la collection Databases dans l’espace de travail associé. Étant donné que Close
ne détruit pas l’objet CDaoDatabase
, vous pouvez réutiliser l’objet en ouvrant la même base de données ou une autre base de données.
Attention
Appelez la fonction membre Update (s’il existe des modifications en attente) et la Close
fonction membre sur tous les objets recordset ouverts avant de fermer une base de données. Si vous quittez une fonction qui déclare CDaoRecordset ou CDaoDatabase
des objets sur la pile, la base de données est fermée, toutes les modifications non enregistrées sont perdues, toutes les transactions en attente sont restaurées et toutes les modifications en attente apportées à vos données sont perdues.
Attention
Si vous essayez de fermer un objet de base de données pendant qu’un objet recordset est ouvert ou si vous essayez de fermer un objet d’espace de travail alors que tous les objets de base de données appartenant à cet espace de travail spécifique sont ouverts, ces objets recordset sont fermés et toutes les mises à jour ou modifications en attente seront restaurées. Si vous essayez de fermer un objet d’espace de travail alors que tous les objets de base de données appartenant à celui-ci sont ouverts, l’opération ferme tous les objets de base de données appartenant à cet objet d’espace de travail spécifique, ce qui peut entraîner la fermeture d’objets recordset non fermés. Si vous ne fermez pas votre objet de base de données, MFC signale un échec d’assertion dans les builds de débogage.
Si l’objet de base de données est défini en dehors de l’étendue d’une fonction et que vous quittez la fonction sans la fermer, l’objet de base de données reste ouvert jusqu’à ce que le module dans lequel il est défini soit hors portée.
CDaoDatabase ::Create
Pour créer un Microsoft Jet (. Base de données MDB, appelez cette fonction membre après avoir construit un CDaoDatabase
objet.
virtual void Create(
LPCTSTR lpszName,
LPCTSTR lpszLocale = dbLangGeneral,
int dwOptions = 0);
Paramètres
lpszName
Expression de chaîne qui est le nom du fichier de base de données que vous créez. Il peut s’agir du chemin d’accès complet et du nom de fichier, par exemple « C :\\MYDB. MDB ». Vous devez fournir un nom. Si vous ne fournissez pas d’extension de nom de fichier, . MDB est ajouté. Si votre réseau prend en charge la convention d’affectation de noms uniforme (UNC), vous pouvez également spécifier un chemin d’accès réseau, tel que « \\\\MYSERVER\\MYSHARE\\MYDIR\\MYDB ». Seul Microsoft Jet (. Les fichiers de base de données MDB) peuvent être créés à l’aide de cette fonction membre. (Les barres obliques inverses doubles sont requises dans les littéraux de chaîne, car « \ » est le caractère d’échappement C++.)
lpszLocale
Expression de chaîne utilisée pour spécifier l’ordre de classement de la création de la base de données. La valeur par défaut est dbLangGeneral
. Les valeurs possibles sont les suivantes :
dbLangGeneral
Anglais, allemand, Français, portugais, italien et espagnol modernedbLangArabic
ArabedbLangCyrillic
RussedbLangCzech
TchèquedbLangDutch
NéerlandaisdbLangGreek
GrecdbLangHebrew
HébreudbLangHungarian
HongroisdbLangIcelandic
IslandaisdbLangNordic
Langues nordiques (moteur de base de données Microsoft Jet version 1.0 uniquement)dbLangNorwdan
Norvégien et danoisdbLangPolish
PolonaisdbLangSpanish
Espagnol traditionneldbLangSwedfin
Suédois et finnoisdbLangTurkish
Turc
dwOptions
Entier qui indique une ou plusieurs options. Les valeurs possibles sont les suivantes :
dbEncrypt
Créez une base de données chiffrée.dbVersion10
Créez une base de données avec la base de données Microsoft Jet version 1.0.dbVersion11
Créez une base de données avec la base de données Microsoft Jet version 1.1.dbVersion20
Créez une base de données avec la base de données Microsoft Jet version 2.0.dbVersion30
Créez une base de données avec la base de données Microsoft Jet version 3.0.
Si vous omettez la constante de chiffrement, une base de données non chiffrée est créée. Vous ne pouvez spécifier qu’une seule constante de version. Si vous omettez une constante de version, une base de données qui utilise la base de données Microsoft Jet version 3.0 est créée.
Attention
Si une base de données n’est pas chiffrée, il est possible, même si vous implémentez la sécurité utilisateur/mot de passe, de lire directement le fichier de disque binaire qui constitue la base de données.
Notes
Create
crée le fichier de base de données et l’objet de base de données DAO sous-jacent et initialise l’objet C++. L’objet est ajouté à la collection Databases de l’espace de travail associé. L’objet de base de données est dans un état ouvert ; n’appelez Open*
pas après Create
.
Remarque
Avec Create
, vous pouvez créer uniquement Microsoft Jet (. Bases de données MDB. Vous ne pouvez pas créer de bases de données ISAM ou de bases de données ODBC.
CDaoDatabase ::CreateRelation
Appelez cette fonction membre pour établir une relation entre un ou plusieurs champs d’une table primaire de la base de données et un ou plusieurs champs d’une table étrangère (une autre table de la base de données).
void CreateRelation(
LPCTSTR lpszName,
LPCTSTR lpszTable,
LPCTSTR lpszForeignTable,
long lAttributes,
LPCTSTR lpszField,
LPCTSTR lpszForeignField);
void CreateRelation(CDaoRelationInfo& relinfo);
Paramètres
lpszName
Nom unique de l’objet relation. Le nom doit commencer par une lettre et peut contenir un maximum de 40 caractères. Il peut inclure des nombres et des caractères de soulignement, mais ne peut pas inclure de ponctuation ou d’espaces.
lpszTable
Nom de la table primaire dans la relation. Si la table n’existe pas, MFC lève une exception de type CDaoException.
lpszForeignTable
Nom de la table étrangère dans la relation. Si la table n’existe pas, MFC lève une exception de type CDaoException
.
lAttributes
Valeur longue qui contient des informations sur le type de relation. Vous pouvez utiliser cette valeur pour appliquer l’intégrité référentielle, entre autres. Vous pouvez utiliser l’opérateur OR au niveau du bit (|
) pour combiner l’une des valeurs suivantes (tant que la combinaison est logique) :
dbRelationUnique
La relation est un-à-un.dbRelationDontEnforce
La relation n’est pas appliquée (aucune intégrité référentielle).dbRelationInherited
La relation existe dans une base de données noncurrente qui contient les deux tables jointes.dbRelationUpdateCascade
Les mises à jour sont en cascade (pour plus d’informations sur les cascades, voir Remarques).dbRelationDeleteCascade
Les suppressions sont en cascade.
lpszField
Pointeur vers une chaîne terminée par null contenant le nom d’un champ dans la table primaire (nommée par lpszTable).
lpszForeignField
Pointeur vers une chaîne terminée par null contenant le nom d’un champ dans la table étrangère (nommée par lpszForeignTable).
relinfo
Référence à un objet CDaoRelationInfo qui contient des informations sur la relation que vous souhaitez créer.
Notes
La relation ne peut pas impliquer une requête ou une table jointe à partir d’une base de données externe.
Utilisez la première version de la fonction lorsque la relation implique un champ dans chacune des deux tables. Utilisez la deuxième version lorsque la relation implique plusieurs champs. Le nombre maximal de champs dans une relation est de 14.
Cette action crée un objet de relation DAO sous-jacent, mais il s’agit d’un détail d’implémentation MFC, car l’encapsulation des objets relationnels est contenue dans la classe CDaoDatabase
. MFC ne fournit pas de classe pour les relations.
Si vous définissez les attributs de l’objet relation pour activer les opérations en cascade, le moteur de base de données met automatiquement à jour ou supprime automatiquement les enregistrements d’une ou de plusieurs autres tables lorsque des modifications sont apportées aux tables de clés primaires associées.
Par exemple, supposons que vous établissez une relation de suppression en cascade entre une table Customers et une table Orders. Lorsque vous supprimez des enregistrements de la table Customers, les enregistrements de la table Orders associés à ce client sont également supprimés. En outre, si vous établissez des relations de suppression en cascade entre la table Orders et d’autres tables, les enregistrements de ces tables sont automatiquement supprimés lorsque vous supprimez des enregistrements de la table Customers.
Pour plus d’informations, consultez la rubrique « CreateRelation Method » dans L’aide de DAO.
CDaoDatabase ::D eleteQueryDef
Appelez cette fonction membre pour supprimer le querydef spécifié ( requête enregistrée) de la collection QueryDefs de l’objet CDaoDatabase
.
void DeleteQueryDef(LPCTSTR lpszName);
Paramètres
lpszName
Nom de la requête enregistrée à supprimer.
Notes
Par la suite, cette requête n’est plus définie dans la base de données.
Pour plus d’informations sur la création d’objets querydef, consultez la classe CDaoQueryDef. Un objet querydef devient associé à un objet particulier CDaoDatabase
lorsque vous construisez l’objet CDaoQueryDef
, en lui transmettant un pointeur vers l’objet de base de données.
CDaoDatabase ::D eleteRelation
Appelez cette fonction membre pour supprimer une relation existante de la collection Relations de l’objet de base de données.
void DeleteRelation(LPCTSTR lpszName);
Paramètres
lpszName
Nom de la relation à supprimer.
Notes
Par la suite, la relation n’existe plus.
Pour plus d’informations, consultez la rubrique « Supprimer la méthode » dans l’aide de DAO.
CDaoDatabase ::D eleteTableDef
Appelez cette fonction membre pour supprimer la table spécifiée et toutes ses données de la collection TableDefs de l’objet CDaoDatabase
.
void DeleteTableDef(LPCTSTR lpszName);
Paramètres
lpszName
Nom du tabledef à supprimer.
Notes
Par la suite, cette table n’est plus définie dans la base de données.
Remarque
Veillez à ne pas supprimer les tables système.
Pour plus d’informations sur la création d’objets tabledef, consultez la classe CDaoTableDef. Un objet tabledef devient associé à un objet particulier CDaoDatabase
lorsque vous construisez l’objet CDaoTableDef
, en lui transmettant un pointeur vers l’objet de base de données.
Pour plus d’informations, consultez la rubrique « Supprimer la méthode » dans l’aide de DAO.
CDaoDatabase ::Execute
Appelez cette fonction membre pour exécuter une requête d’action ou exécuter une instruction SQL sur la base de données.
void Execute(
LPCTSTR lpszSQL,
int nOptions = dbFailOnError);
Paramètres
lpszSQL
Pointeur vers une chaîne terminée par null contenant une commande SQL valide à exécuter.
nOptions
Entier qui spécifie les options relatives à l’intégrité de la requête. Vous pouvez utiliser l’opérateur OR au niveau du bit (|
) pour combiner l’une des constantes suivantes, à condition que la combinaison soit logique. Par exemple, vous ne devez pas combiner dbInconsistent
avec dbConsistent
:
dbDenyWrite
Refuser l’autorisation d’écriture à d’autres utilisateurs.dbInconsistent
(Par défaut) Mises à jour incohérentes.dbConsistent
Mises à jour cohérentes.dbSQLPassThrough
Pass-through SQL. Provoque le passage de l’instruction SQL à une source de données ODBC pour le traitement.dbFailOnError
Restaurer les mises à jour si une erreur se produit.dbSeeChanges
Générez une erreur d’exécution si un autre utilisateur modifie les données que vous modifiez.
Remarque
Si les deux dbInconsistent
et dbConsistent
sont inclus ou si aucun n’est inclus, le résultat est la valeur par défaut. Pour obtenir une explication de ces constantes, consultez la rubrique « Execute Method » dans L’aide de DAO.
Notes
Execute
fonctionne uniquement pour les requêtes d’action ou les requêtes directes SQL qui ne retournent pas de résultats. Il ne fonctionne pas pour les requêtes select, qui retournent des enregistrements.
Pour obtenir une définition et des informations sur les requêtes d’action, consultez les rubriques « Requête d’action » et « Exécuter la méthode » dans l’aide DAO.
Conseil
Étant donné une instruction SQL correcte de manière syntactique et des autorisations appropriées, la Execute
fonction membre ne échouera pas même si aucune ligne ne peut être modifiée ou supprimée. Par conséquent, utilisez toujours l’option dbFailOnError
lors de l’utilisation de la Execute
fonction membre pour exécuter une requête de mise à jour ou de suppression. Cette option entraîne la levée d’une exception de type CDaoException et restaure toutes les modifications réussies si l’un des enregistrements affectés est verrouillé et ne peut pas être mis à jour ou supprimé. Notez que vous pouvez toujours appeler GetRecordsAffected
pour voir le nombre d’enregistrements affectés.
Appelez la fonction membre GetRecordsAffected de l’objet de base de données pour déterminer le nombre d’enregistrements affectés par l’appel le plus récent Execute
. Par exemple, GetRecordsAffected
retourne des informations sur le nombre d’enregistrements supprimés, mis à jour ou insérés lors de l’exécution d’une requête d’action. Le nombre retourné ne reflète pas les modifications apportées aux tables associées lorsque les mises à jour ou suppressions en cascade sont en vigueur.
Execute
ne retourne pas un jeu d’enregistrements. L’utilisation Execute
sur une requête qui sélectionne les enregistrements entraîne la levée d’une exception de type CDaoException
par MFC. (Il n’existe aucune ExecuteSQL
fonction membre analogue à CDatabase::ExecuteSQL
.)
CDaoDatabase ::GetConnect
Appelez cette fonction membre pour récupérer le chaîne de connexion utilisé pour connecter l’objet CDaoDatabase
à une base de données ODBC ou ISAM.
CString GetConnect();
Valeur de retour
L’chaîne de connexion si Open a été appelé avec succès sur une source de données ODBC ; sinon, une chaîne vide. Pour un Microsoft Jet (. Base de données MDB, la chaîne est toujours vide, sauf si vous la définissez pour une utilisation avec l’option utilisée avec la dbSQLPassThrough
fonction Membre Execute ou utilisée pour ouvrir un jeu d’enregistrements.
Notes
La chaîne fournit des informations sur la source d’une base de données ouverte ou d’une base de données utilisée dans une requête directe. Le chaîne de connexion est composé d’un spécificateur de type de base de données et de zéro ou plusieurs paramètres séparés par des points-virgules.
Remarque
L’utilisation des classes DAO MFC pour se connecter à une source de données via ODBC est moins efficace que la connexion via une table jointe.
Remarque
Le chaîne de connexion est utilisé pour transmettre des informations supplémentaires à ODBC et à certains pilotes ISAM en fonction des besoins. Il n’est pas utilisé pour . Bases de données MDB. Pour les tables de base de données Microsoft Jet, l’chaîne de connexion est une chaîne vide ( » « ) sauf lorsque vous l’utilisez pour une requête directe SQL, comme décrit dans La valeur renvoyée ci-dessus.
Consultez la fonction Open member pour obtenir une description de la façon dont la chaîne de connexion est créée. Une fois que le chaîne de connexion a été défini dans l’appelOpen
, vous pouvez l’utiliser ultérieurement pour vérifier le type, le chemin d’accès, l’ID utilisateur, le mot de passe ou la source de données ODBC de la base de données.
CDaoDatabase ::GetName
Appelez cette fonction membre pour récupérer le nom de la base de données actuellement ouverte, qui est le nom d’un fichier de base de données existant ou le nom d’une source de données ODBC inscrite.
CString GetName();
Valeur de retour
Chemin d’accès complet et nom de fichier de la base de données en cas de réussite ; sinon, un CString vide.
Notes
Si votre réseau prend en charge la convention d’affectation de noms uniforme (UNC), vous pouvez également spécifier un chemin d’accès réseau, par exemple « \\MYSERVER\\MYSHARE\\MYDIR\\MYDB. MDB ». (Les barres obliques inverses doubles sont requises dans les littéraux de chaîne, car « \ » est le caractère d’échappement C++.)
Vous pouvez, par exemple, afficher ce nom dans un titre. Si une erreur se produit pendant la récupération du nom, MFC lève une exception de type CDaoException.
Remarque
Pour de meilleures performances lorsque des bases de données externes sont accessibles, nous vous recommandons d’attacher des tables de base de données externes à une base de données Microsoft Jet (. MDB) au lieu de se connecter directement à la source de données.
Le type de base de données est indiqué par le fichier ou le répertoire vers lequel le chemin pointe, comme suit :
Pathname pointe vers.. | Type de base de données |
---|---|
. Fichier MDB | Base de données Microsoft Jet (Microsoft Access) |
Répertoire qui contient . Fichier(s) DBF | base de données dBASE |
Répertoire contenant .XLS fichier | Base de données Microsoft Excel |
Répertoire qui contient . Fichier(s) PDX | Base de données Paradox |
Répertoire contenant des fichiers de base de données texte correctement mis en forme | Base de données au format texte |
Pour les bases de données ODBC telles que SQL Server et Oracle, le chaîne de connexion de la base de données identifie un nom de source de données (DSN) inscrit par ODBC.
CDaoDatabase ::GetQueryDefCount
Appelez cette fonction membre pour récupérer le nombre de requêtes définies dans la collection QueryDefs de la base de données.
short GetQueryDefCount();
Valeur de retour
Nombre de requêtes définies dans la base de données.
Notes
GetQueryDefCount
est utile si vous devez parcourir tous les querydefs de la collection QueryDefs. Pour obtenir des informations sur une requête donnée dans la collection, consultez GetQueryDefInfo.
CDaoDatabase ::GetQueryDefInfo
Appelez cette fonction membre pour obtenir différents types d’informations sur une requête définie dans la base de données.
void GetQueryDefInfo(
int nIndex,
CDaoQueryDefInfo& querydefinfo,
DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
void GetQueryDefInfo(
LPCTSTR lpszName,
CDaoQueryDefInfo& querydefinfo,
DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
Paramètres
nIndex
Index de la requête prédéfinie dans la collection QueryDefs de la base de données, pour la recherche par index.
querydefinfo
Référence à un objet CDaoQueryDefInfo qui retourne les informations demandées.
dwInfoOptions
Options qui spécifient les informations sur le jeu d’enregistrements à récupérer. Les options disponibles sont répertoriées ici, ainsi que ce qu’elles entraînent le retour de la fonction sur le jeu d’enregistrements :
nom AFX_DAO_PRIMARY_INFO (valeur par défaut), type
AFX_DAO_SECONDARY_INFO Informations principales plus : Date de création, date de dernière mise à jour, retour d’enregistrements, mise à jour pouvant être mise à jour
AFX_DAO_ALL_INFO informations primaires et secondaires plus : SQL, Connect, ODBCTimeout
lpszName
Chaîne contenant le nom d’une requête définie dans la base de données, pour la recherche par nom.
Notes
Deux versions de la fonction sont fournies pour vous permettre de sélectionner une requête par index dans la collection QueryDefs de la base de données ou par le nom de la requête.
Pour obtenir une description des informations retournées dans querydefinfo, consultez la structure CDaoQueryDefInfo . Cette structure comporte des membres qui correspondent aux éléments d’informations répertoriés ci-dessus dans la description de dwInfoOptions. Si vous demandez un niveau d’information, vous obtenez également tous les niveaux d’information antérieurs.
CDaoDatabase ::GetQueryTimeout
Appelez cette fonction membre pour récupérer le nombre actuel de secondes à autoriser avant que les opérations suivantes sur la base de données connectée soient expirées.
short GetQueryTimeout();
Valeur de retour
Entier court contenant la valeur de délai d’expiration en secondes.
Notes
Une opération peut expirer en raison de problèmes d’accès réseau, de temps de traitement excessif des requêtes, et ainsi de suite. Bien que le paramètre soit en vigueur, il affecte toutes les opérations d’ouverture, d’ajout, de mise à jour et de suppression sur tous les jeux d’enregistrements associés à cet CDaoDatabase
objet. Vous pouvez modifier le paramètre de délai d’attente actuel en appelant SetQueryTimeout. La modification de la valeur du délai d’expiration de la requête pour un jeu d’enregistrements après l’ouverture ne modifie pas la valeur du jeu d’enregistrements. Par exemple, les opérations de déplacement suivantes n’utilisent pas la nouvelle valeur. La valeur par défaut est initialement définie lorsque le moteur de base de données est initialisé.
La valeur par défaut des délais d’expiration de requête est extraite du Registre Windows. S’il n’existe aucun paramètre de Registre, la valeur par défaut est de 60 secondes. Toutes les bases de données ne prennent pas en charge la possibilité de définir une valeur de délai d’expiration de requête. Si vous définissez une valeur de délai d’expiration de requête de 0, aucun délai d’expiration ne se produit ; et la communication avec la base de données peuvent cesser de répondre. Ce comportement peut être utile pendant le développement. Si l’appel échoue, MFC lève une exception de type CDaoException.
Pour plus d’informations, consultez la rubrique « QueryTimeout Property » dans L’aide de DAO.
CDaoDatabase ::GetRecordsAffected
Appelez cette fonction membre pour déterminer le nombre d’enregistrements affectés par l’appel le plus récent de la fonction de membre Execute .
long GetRecordsAffected();
Valeur de retour
Entier long contenant le nombre d’enregistrements affectés.
Notes
La valeur retournée inclut le nombre d’enregistrements supprimés, mis à jour ou insérés par une requête d’action exécutée avec Execute
. Le nombre retourné ne reflète pas les modifications apportées aux tables associées lorsque les mises à jour ou suppressions en cascade sont en vigueur.
Pour plus d’informations, consultez la rubrique « RecordsAffected Property » dans L’aide de DAO.
CDaoDatabase ::GetRelationCount
Appelez cette fonction membre pour obtenir le nombre de relations définies entre les tables de la base de données.
short GetRelationCount();
Valeur de retour
Nombre de relations définies entre les tables de la base de données.
Notes
GetRelationCount
est utile si vous devez parcourir toutes les relations définies dans la collection Relations de la base de données. Pour obtenir des informations sur une relation donnée dans la collection, consultez GetRelationInfo.
Pour illustrer le concept d’une relation, considérez une table Fournisseurs et une table Products, qui peut avoir une relation un-à-plusieurs. Dans cette relation, un fournisseur peut fournir plusieurs produits. D’autres relations sont un-à-un et plusieurs-à-plusieurs.
CDaoDatabase ::GetRelationInfo
Appelez cette fonction membre pour obtenir des informations sur une relation spécifiée dans la collection Relations de la base de données.
void GetRelationInfo(
int nIndex,
CDaoRelationInfo& relinfo,
DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
void GetRelationInfo(
LPCTSTR lpszName,
CDaoRelationInfo& relinfo,
DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
Paramètres
nIndex
Index de l’objet relation dans la collection Relations de la base de données, pour la recherche par index.
relinfo
Référence à un objet CDaoRelationInfo qui retourne les informations demandées.
dwInfoOptions
Options qui spécifient les informations relatives à la relation à récupérer. Les options disponibles sont répertoriées ici, ainsi que ce qu’elles entraînent le retour de la fonction sur la relation :
nom AFX_DAO_PRIMARY_INFO (valeur par défaut), table, table étrangère
attributs AFX_DAO_SECONDARY_INFO, informations de champ
Field Information est un objet CDaoRelationFieldInfo contenant les champs de la table primaire impliquée dans la relation.
lpszName
Chaîne contenant le nom de l’objet relation, pour rechercher par nom.
Notes
Deux versions de cette fonction fournissent un accès par index ou par nom. Pour obtenir une description des informations retournées dans relinfo, consultez la structure CDaoRelationInfo . Cette structure comporte des membres qui correspondent aux éléments d’informations répertoriés ci-dessus dans la description de dwInfoOptions. Si vous demandez des informations à un niveau, vous obtenez également des informations à tous les niveaux antérieurs.
Remarque
Si vous définissez les attributs de l’objet relation pour activer des opérations en cascade (dbRelationUpdateCascades
ou dbRelationDeleteCascades
), le moteur de base de données Microsoft Jet met automatiquement à jour ou supprime automatiquement les enregistrements dans une ou plusieurs autres tables lorsque des modifications sont apportées aux tables de clés primaires associées. Par exemple, supposons que vous établissez une relation de suppression en cascade entre une table Customers et une table Orders. Lorsque vous supprimez des enregistrements de la table Customers, les enregistrements de la table Orders associés à ce client sont également supprimés. En outre, si vous établissez des relations de suppression en cascade entre la table Orders et d’autres tables, les enregistrements de ces tables sont automatiquement supprimés lorsque vous supprimez des enregistrements de la table Customers.
CDaoDatabase ::GetTableDefCount
Appelez cette fonction membre pour récupérer le nombre de tables définies dans la base de données.
short GetTableDefCount();
Valeur de retour
Nombre de tabledefs définis dans la base de données.
Notes
GetTableDefCount
est utile si vous devez effectuer une boucle dans toutes les tablesdefs de la collection TableDefs de la base de données. Pour obtenir des informations sur une table donnée dans la collection, consultez GetTableDefInfo.
CDaoDatabase ::GetTableDefInfo
Appelez cette fonction membre pour obtenir différents types d’informations sur une table définie dans la base de données.
void GetTableDefInfo(
int nIndex,
CDaoTableDefInfo& tabledefinfo,
DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
void GetTableDefInfo(
LPCTSTR lpszName,
CDaoTableDefInfo& tabledefinfo,
DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
Paramètres
nIndex
Index de l’objet tabledef dans la collection TableDefs de la base de données, pour la recherche par index.
tabledefinfo
Référence à un objet CDaoTableDefInfo qui retourne les informations demandées.
dwInfoOptions
Options qui spécifient les informations sur la table à récupérer. Les options disponibles sont répertoriées ici, ainsi que ce qu’elles entraînent le retour de la fonction sur la relation :
nom AFX_DAO_PRIMARY_INFO (valeur par défaut), mise à jour, attributs
AFX_DAO_SECONDARY_INFO Informations principales plus : Date de création, Date de dernière mise à jour, Nom de la table source, Connexion
AFX_DAO_ALL_INFO informations primaires et secondaires plus : règle de validation, texte de validation, nombre d’enregistrements
lpszName
Nom de l’objet tabledef, pour la recherche par nom.
Notes
Deux versions de la fonction sont fournies pour vous permettre de sélectionner une table par index dans la collection TableDefs de la base de données ou par le nom de la table.
Pour obtenir une description des informations retournées dans tabledefinfo, consultez la structure CDaoTableDefInfo . Cette structure comporte des membres qui correspondent aux éléments d’informations répertoriés ci-dessus dans la description de dwInfoOptions. Si vous demandez des informations à un niveau, vous obtenez également des informations pour tous les niveaux antérieurs.
Remarque
L’option AFX_DAO_ALL_INFO fournit des informations qui peuvent être lentes à obtenir. Dans ce cas, le comptage des enregistrements dans la table peut prendre beaucoup de temps s’il existe de nombreux enregistrements.
CDaoDatabase ::GetVersion
Appelez cette fonction membre pour déterminer la version du fichier de base de données Microsoft Jet.
CString GetVersion();
Valeur de retour
CString qui indique la version du fichier de base de données associé à l’objet.
Notes
La valeur retournée représente le numéro de version sous la forme « major.minor » ; par exemple, « 3.0 ». Le numéro de version du produit (par exemple, 3.0) se compose du numéro de version (3), d’une période et du numéro de version (0). Les versions à ce jour sont 1.0, 1.1, 2.0 et 3.0.
Pour plus d’informations, consultez la rubrique « Version Property » dans l’aide de DAO.
CDaoDatabase ::IsOpen
Appelez cette fonction membre pour déterminer si l’objet CDaoDatabase
est actuellement ouvert sur une base de données.
BOOL IsOpen() const;
Valeur de retour
Différent de zéro si l’objet CDaoDatabase
est actuellement ouvert ; sinon, 0.
Notes
CDaoDatabase ::m_pDAODatabase
Contient un pointeur vers l’interface OLE de l’objet de base de données DAO sous-jacent à l’objet CDaoDatabase
.
Notes
Utilisez ce pointeur si vous devez accéder directement à l’interface DAO.
Pour plus d’informations sur l’appel de DAO directement, consultez la Note technique 54.
CDaoDatabase ::m_pWorkspace
Contient un pointeur vers l’objet CDaoWorkspace qui contient l’objet de base de données.
Notes
Utilisez ce pointeur si vous devez accéder directement à l’espace de travail. Par exemple, pour obtenir des pointeurs vers d’autres objets de base de données dans la collection Databases de l’espace de travail.
CDaoDatabase ::Open
Vous devez appeler cette fonction membre pour initialiser un objet nouvellement construit CDaoDatabase
qui représente une base de données existante.
virtual void Open(
LPCTSTR lpszName,
BOOL bExclusive = FALSE,
BOOL bReadOnly = FALSE,
LPCTSTR lpszConnect = _T(""));
Paramètres
lpszName
Expression de chaîne qui est le nom d’un Microsoft Jet existant (. Fichier de base de données MDB. Si le nom de fichier a une extension, il est nécessaire. Si votre réseau prend en charge la convention d’affectation de noms uniforme (UNC), vous pouvez également spécifier un chemin d’accès réseau, tel que « \\\\MYSERVER\\MYSHARE\\MYDIR\\MYDB. MDB ». (Les barres obliques inverses doubles sont requises dans les littéraux de chaîne, car « \ » est le caractère d’échappement C++.)
Certaines considérations s’appliquent lors de l’utilisation de lpszName. Si tel est le cas :
Fait référence à une base de données déjà ouverte pour un accès exclusif par un autre utilisateur, MFC lève une exception de type CDaoException. Interceptez cette exception pour informer votre utilisateur que la base de données n’est pas disponible.
Chaîne vide ( » « ) et lpszConnect est « ODBC ; », une boîte de dialogue répertoriant tous les noms de sources de données ODBC inscrits s’affiche afin que l’utilisateur puisse sélectionner une base de données. Vous devez éviter les connexions directes aux sources de données ODBC ; utilisez plutôt une table jointe.
Sinon, ne fait pas référence à une base de données existante ou à un nom de source de données ODBC valide, MFC lève une exception de type
CDaoException
.
Remarque
Pour plus d’informations sur les codes d’erreur DAO, consultez le DAOERR. Fichier H. Pour plus d’informations, consultez la rubrique « Erreurs d’accès aux données interceptables » dans l’aide de DAO.
bExclusive
Valeur booléenne true si la base de données doit être ouverte pour un accès exclusif (non partagé) et FALSE si la base de données doit être ouverte pour l’accès partagé. Si vous omettez cet argument, la base de données est ouverte pour l’accès partagé.
bReadOnly
Valeur booléenne true si la base de données doit être ouverte pour l’accès en lecture seule et FALSE si la base de données doit être ouverte pour l’accès en lecture/écriture. Si vous omettez cet argument, la base de données est ouverte pour l’accès en lecture/écriture. Tous les jeux d’enregistrements dépendants héritent de cet attribut.
lpszConnect
Expression de chaîne utilisée pour ouvrir la base de données. Cette chaîne constitue les arguments de connexion ODBC. Vous devez fournir les arguments exclusifs et en lecture seule pour fournir une chaîne source. Si la base de données est une base de données Microsoft Jet (. MDB), cette chaîne est vide (« »). La syntaxe de la valeur par défaut ( _T(« ») fournit la portabilité pour Unicode ainsi que les builds ANSI de votre application.
Notes
Open
associe la base de données à l’objet DAO sous-jacent. Vous ne pouvez pas utiliser l’objet de base de données pour construire un jeu d’enregistrements, un tabledef ou des objets querydef tant qu’il n’est pas initialisé. Open
ajoute l’objet de base de données à la collection Bases de données de l’espace de travail associé.
Utilisez les paramètres comme suit :
Si vous ouvrez un Microsoft Jet (. Base de données MDB, utilisez le paramètre lpszName et transmettez une chaîne vide pour le paramètre lpszConnect ou transmettez une chaîne de mot de passe du formulaire « ; PWD=password » si la base de données est protégée par mot de passe (. Bases de données MDB uniquement).
Si vous ouvrez une source de données ODBC, transmettez une chaîne de connexion ODBC valide dans lpszConnect et une chaîne vide dans lpszName.
Pour plus d’informations, consultez la rubrique « OpenDatabase Method » dans DAO Help.
Remarque
Pour de meilleures performances lors de l’accès aux bases de données externes, notamment les bases de données ISAM et les sources de données ODBC, il est recommandé d’attacher des tables de base de données externes à une base de données du moteur Microsoft Jet (. MDB) au lieu de se connecter directement à la source de données.
Il est possible qu’une tentative de connexion expire si, par exemple, l’hôte SGBD n’est pas disponible. Si la tentative de connexion échoue, Open
lève une exception de type CDaoException.
Les remarques restantes s’appliquent uniquement aux bases de données ODBC :
Si la base de données est une base de données ODBC et que les paramètres de votre Open
appel ne contiennent pas suffisamment d’informations pour établir la connexion, le pilote ODBC ouvre une boîte de dialogue pour obtenir les informations nécessaires de l’utilisateur. Lorsque vous appelez Open
, votre chaîne de connexion, lpszConnect, est stocké en privé et est disponible en appelant la fonction membre GetConnect.
Si vous le souhaitez, vous pouvez ouvrir votre propre boîte de dialogue avant d’appeler Open
pour obtenir des informations de l’utilisateur, telles qu’un mot de passe, puis ajouter ces informations au chaîne de connexion à laquelle vous passez Open
. Vous pouvez également enregistrer le chaîne de connexion que vous transmettez (peut-être dans le Registre Windows) afin de pouvoir le réutiliser la prochaine fois que votre application appelle Open
un CDaoDatabase
objet.
Vous pouvez également utiliser le chaîne de connexion pour plusieurs niveaux d’autorisation de connexion (chacun pour un objet différentCDaoDatabase
) ou pour transmettre d’autres informations spécifiques à la base de données.
CDaoDatabase ::SetQueryTimeout
Appelez cette fonction membre pour remplacer le nombre de secondes par défaut à autoriser avant les opérations suivantes sur le délai d’expiration de la base de données connectée.
void SetQueryTimeout(short nSeconds);
Paramètres
nSeconds
Nombre de secondes à autoriser avant qu’une tentative de requête expire.
Notes
Une opération peut expirer en raison de problèmes d’accès réseau, de temps de traitement excessif des requêtes, et ainsi de suite. Appelez SetQueryTimeout
avant d’ouvrir votre jeu d’enregistrements ou avant d’appeler les fonctions de membre AddNew, Update ou Delete du jeu d’enregistrements si vous souhaitez modifier la valeur du délai d’expiration de la requête. Le paramètre affecte tous les appels AddNew
, Update
et Delete
ouverts suivants à tous les jeux d’enregistrements associés à cet objet CDaoDatabase
. La modification de la valeur du délai d’expiration de la requête pour un jeu d’enregistrements après l’ouverture ne modifie pas la valeur du jeu d’enregistrements. Par exemple, les opérations de déplacement suivantes n’utilisent pas la nouvelle valeur.
La valeur par défaut des délais d’expiration de requête est de 60 secondes. Toutes les bases de données ne prennent pas en charge la possibilité de définir une valeur de délai d’expiration de requête. Si vous définissez une valeur de délai d’expiration de requête de 0, aucun délai d’expiration ne se produit ; la communication avec la base de données peut cesser de répondre. Ce comportement peut être utile pendant le développement.
Pour plus d’informations, consultez la rubrique « QueryTimeout Property » dans L’aide de DAO.
Voir aussi
CObject, classe
Graphique hiérarchique
CDaoWorkspace, classe
CDaoRecordset, classe
CDaoTableDef, classe
CDaoQueryDef, classe
CDatabase, classe
CDaoException, classe