CDaoDatabase-Klasse
Stellt eine Verbindung mit einer Access-Datenbank mithilfe von Data Access Objects (DAO) dar.
Hinweis
Das Datenzugriffsobjekt (Data Access Object, DAO) wird über Office 2013 unterstützt. DAO 3.6 ist die endgültige Version und veraltet.
Syntax
class CDaoDatabase : public CObject
Member
Öffentliche Konstruktoren
Name | Beschreibung |
---|---|
CDaoDatabase::CDaoDatabase | Erstellt ein CDaoDatabase -Objekt. Aufrufen Open , um das Objekt mit einer Datenbank zu verbinden. |
Öffentliche Methoden
Name | Beschreibung |
---|---|
CDaoDatabase::CanTransact | Gibt "nonzero" zurück, wenn die Datenbank Transaktionen unterstützt. |
CDaoDatabase::CanUpdate | Gibt nonzero zurück, wenn das CDaoDatabase Objekt aktualisierbar ist (nicht schreibgeschützt). |
CDaoDatabase::Close | Schließt die Datenbankverbindung. |
CDaoDatabase::Create | Erstellt das zugrunde liegende DAO-Datenbankobjekt und initialisiert das CDaoDatabase Objekt. |
CDaoDatabase::CreateRelation | Definiert eine neue Beziehung zwischen den Tabellen in der Datenbank. |
CDaoDatabase::D eleteQueryDef | Löscht ein querydef -Objekt, das in der QueryDefs -Auflistung der Datenbank gespeichert ist. |
CDaoDatabase::D eleteRelation | Löscht eine vorhandene Beziehung zwischen Tabellen in der Datenbank. |
CDaoDatabase::D eleteTableDef | Löscht die Definition einer Tabelle in der Datenbank. Dadurch werden die tatsächliche Tabelle und alle zugehörigen Daten gelöscht. |
CDaoDatabase::Execute | Führt eine Aktionsabfrage aus. Das Aufrufen Execute einer Abfrage, die Ergebnisse zurückgibt, löst eine Ausnahme aus. |
CDaoDatabase::GetConnect | Gibt die Verbindungszeichenfolge zurück, die zum Verbinden des CDaoDatabase Objekts mit einer Datenbank verwendet wird. Wird für ODBC verwendet. |
CDaoDatabase::GetName | Gibt den Namen der aktuell verwendeten Datenbank zurück. |
CDaoDatabase::GetQueryDefCount | Gibt die Anzahl der für die Datenbank definierten Abfragen zurück. |
CDaoDatabase::GetQueryDefInfo | Gibt Informationen zu einer angegebenen Abfrage zurück, die in der Datenbank definiert ist. |
CDaoDatabase::GetQueryTimeout | Gibt die Anzahl der Sekunden zurück, nach denen ein Timeout für Datenbankabfragevorgänge erfolgt. Wirkt sich auf alle nachfolgenden geöffneten Vorgänge aus, fügt neue Vorgänge, Aktualisierungen und Bearbeitungsvorgänge sowie andere Vorgänge in ODBC-Datenquellen (nur) wie Execute z. B. Aufrufe ein. |
CDaoDatabase::GetRecordsAffected | Gibt die Anzahl der Datensätze zurück, die von der letzten Aktualisierung, Bearbeitung oder dem Hinzufügen eines Vorgangs oder eines Aufrufs Execute betroffen sind. |
CDaoDatabase::GetRelationCount | Gibt die Anzahl der Beziehungen zurück, die zwischen Tabellen in der Datenbank definiert sind. |
CDaoDatabase::GetRelationInfo | Gibt Informationen zu einer angegebenen Beziehung zurück, die zwischen Tabellen in der Datenbank definiert ist. |
CDaoDatabase::GetTableDefCount | Gibt die Anzahl der tabellen zurück, die in der Datenbank definiert sind. |
CDaoDatabase::GetTableDefInfo | Gibt Informationen zu einer angegebenen Tabelle in der Datenbank zurück. |
CDaoDatabase::GetVersion | Gibt die Version des Datenbankmoduls zurück, das der Datenbank zugeordnet ist. |
CDaoDatabase::IsOpen | Gibt "nonzero" zurück, wenn das CDaoDatabase Objekt derzeit mit einer Datenbank verbunden ist. |
CDaoDatabase::Open | Stellt eine Verbindung mit einer Datenbank her. |
CDaoDatabase::SetQueryTimeout | Legt die Anzahl der Sekunden fest, nach denen Datenbankabfragevorgänge (nur in ODBC-Datenquellen) Timeouts ausgeführt werden. Wirkt sich auf alle nachfolgenden geöffneten Vorgänge aus, fügt neue Vorgänge, Aktualisierungen und Löschvorgänge hinzu. |
Öffentliche Datenmember
Name | Beschreibung |
---|---|
CDaoDatabase::m_pDAODatabase | Ein Zeiger auf das zugrunde liegende DAO-Datenbankobjekt. |
CDaoDatabase::m_pWorkspace | Ein Zeiger auf das CDaoWorkspace-Objekt , das die Datenbank enthält, und definiert den Transaktionsbereich. |
Hinweise
Informationen zu den unterstützten Datenbankformaten finden Sie in der GetName-Memberfunktion . Sie können ein oder CDaoDatabase
mehrere Objekte gleichzeitig in einem bestimmten "Arbeitsbereich" aktiv haben, dargestellt durch ein CDaoWorkspace-Objekt . Der Arbeitsbereich verwaltet eine Auflistung von geöffneten Datenbankobjekten, die als Databases-Auflistung bezeichnet werden.
Verbrauch
Sie können Datenbankobjekte implizit erstellen, wenn Sie Recordset-Objekte erstellen. Sie können aber auch datenbankobjekte explizit erstellen. Wenn Sie eine vorhandene Datenbank explizit mit CDaoDatabase
verwenden möchten, führen Sie eine der folgenden Aktionen aus:
Erstellen Sie ein
CDaoDatabase
Objekt, und übergeben Sie einen Zeiger auf ein geöffnetes CDaoWorkspace-Objekt .Oder erstellen Sie ein
CDaoDatabase
Objekt, ohne den Arbeitsbereich anzugeben (MFC erstellt ein temporäres Arbeitsbereichsobjekt).
So erstellen Sie einen neuen Microsoft Jet (. MDB)-Datenbank, Erstellen eines CDaoDatabase
Objekts und Aufrufen der Create-Memberfunktion . Rufen Open
Sie nicht nach Create
.
Um eine vorhandene Datenbank zu öffnen, erstellen Sie ein CDaoDatabase
Objekt, und rufen Sie dessen Open-Memberfunktion auf.
Jede dieser Techniken fügt das DAO-Datenbankobjekt an die Databases-Auflistung des Arbeitsbereichs an und öffnet eine Verbindung mit den Daten. Wenn Sie dann CDaoRecordset-, CDaoTableDef- oder CDaoQueryDef-Objekte für die Verwendung in der verbundenen Datenbank erstellen, übergeben Sie die Konstruktoren für diese Objekte einen Zeiger auf das CDaoDatabase
Objekt. Wenn Sie mit der Verwendung der Verbindung fertig sind, rufen Sie die Close-Memberfunktion auf, und zerstören Sie das CDaoDatabase
Objekt. Close
schließt alle Recordsets, die Sie noch nicht geschlossen haben.
Transaktionen
Datenbanktransaktionsverarbeitung wird auf Arbeitsbereichsebene bereitgestellt – siehe die Funktionen BeginTrans, CommitTrans und Rollback von Klassen CDaoWorkspace
.
ODBC-Verbindungen
Die empfohlene Methode zum Arbeiten mit ODBC-Datenquellen (Open Database Base Connectivity) besteht darin, externe Tabellen an eine Microsoft Jet-Datenbank (.MDB
) anzufügen.
Sammlungen
Jede Datenbank verwaltet eigene Auflistungen von Tabledef-, Querydef-, Recordset- und Relation-Objekten. Die Klasse CDaoDatabase
stellt Memberfunktionen zum Bearbeiten dieser Objekte zur Anwendung.
Hinweis
Die Objekte werden in DAO gespeichert, nicht im MFC-Datenbankobjekt. MFC stellt Klassen für Tabledef-, Querydef- und Recordset-Objekte, aber nicht für Relation-Objekte zur Versorgung dar.
Vererbungshierarchie
CDaoDatabase
Anforderungen
Header: afxdao.h
CDaoDatabase::CanTransact
Rufen Sie diese Memberfunktion auf, um zu bestimmen, ob die Datenbank Transaktionen zulässt.
BOOL CanTransact();
Rückgabewert
Nonzero, wenn die Datenbank Transaktionen unterstützt; andernfalls 0.
Hinweise
Transaktionen werden im Arbeitsbereich der Datenbank verwaltet.
CDaoDatabase::CanUpdate
Rufen Sie diese Memberfunktion auf, um zu bestimmen, ob das CDaoDatabase
Objekt Aktualisierungen zulässt.
BOOL CanUpdate();
Rückgabewert
Nonzero, wenn das CDaoDatabase
Objekt Aktualisierungen zulässt; andernfalls 0, der angibt, dass Sie TRUE in bReadOnly übergeben haben, wenn Sie das CDaoDatabase
Objekt geöffnet haben oder dass die Datenbank selbst schreibgeschützt ist. Siehe die Open-Member-Funktion .
Hinweise
Informationen zur Datenbankaufwendbarkeit finden Sie im Thema "Aktualisierbare Eigenschaft" in der DAO-Hilfe.
CDaoDatabase::CDaoDatabase
Erstellt ein CDaoDatabase
-Objekt.
CDaoDatabase(CDaoWorkspace* pWorkspace = NULL);
Parameter
pWorkspace
Ein Zeiger auf das CDaoWorkspace
Objekt, das das neue Datenbankobjekt enthält. Wenn Sie den Standardwert von NULL akzeptieren, erstellt der Konstruktor ein temporäres CDaoWorkspace
Objekt, das den standardmäßigen DAO-Arbeitsbereich verwendet. Sie können über das m_pWorkspace-Datenelement einen Zeiger auf das Arbeitsbereichsobjekt abrufen.
Hinweise
Nach dem Erstellen des Objekts, wenn Sie einen neuen Microsoft Jet erstellen (. MDB)-Datenbank, Rufen Sie die Create-Memberfunktion des Objekts auf. Wenn Sie stattdessen eine vorhandene Datenbank öffnen, rufen Sie die Open-Memberfunktion des Objekts auf.
Wenn Sie mit dem Objekt fertig sind, sollten Sie dessen Close-Memberfunktion aufrufen und das CDaoDatabase
Objekt dann zerstören.
Möglicherweise ist es praktisch, das CDaoDatabase
Objekt in Ihre Dokumentklasse einzubetten.
Hinweis
Ein CDaoDatabase
Objekt wird auch implizit erstellt, wenn Sie ein CDaoRecordset-Objekt öffnen, ohne einen Zeiger an ein vorhandenes CDaoDatabase
Objekt zu übergeben. Dieses Datenbankobjekt wird geschlossen, wenn Sie das Recordset-Objekt schließen.
CDaoDatabase::Close
Rufen Sie diese Memberfunktion auf, um die Verbindung mit einer Datenbank zu trennen und alle geöffneten Recordsets, Tabledefs und Querydefs zu schließen, die der Datenbank zugeordnet sind.
virtual void Close();
Hinweise
Es empfiehlt sich, diese Objekte selbst zu schließen, bevor Sie diese Memberfunktion aufrufen. Durch das Schließen eines CDaoDatabase
Objekts wird es aus der Databases-Auflistung im zugeordneten Arbeitsbereich entfernt. Da Close
das CDaoDatabase
Objekt nicht zerstört wird, können Sie das Objekt wiederverwenden, indem Sie dieselbe Datenbank oder eine andere Datenbank öffnen.
Achtung
Rufen Sie die Update-Memberfunktion (wenn ausstehende Bearbeitungen vorhanden sind) und die Close
Memberfunktion für alle geöffneten Recordsetobjekte auf, bevor Sie eine Datenbank schließen. Wenn Sie eine Funktion beenden, die CDaoRecordset oder CDaoDatabase
Objekte im Stapel deklariert, wird die Datenbank geschlossen, alle nicht gespeicherten Änderungen gehen verloren, alle ausstehenden Transaktionen werden zurückgesetzt, und alle ausstehenden Änderungen an Ihren Daten gehen verloren.
Achtung
Wenn Sie versuchen, ein Datenbankobjekt zu schließen, während recordset-Objekte geöffnet sind, oder wenn Sie versuchen, ein Arbeitsbereichsobjekt zu schließen, während alle Datenbankobjekte, die zu diesem bestimmten Arbeitsbereich gehören, geöffnet sind, werden diese Recordsetobjekte geschlossen, und alle ausstehenden Aktualisierungen oder Bearbeitungen werden zurückgesetzt. Wenn Sie versuchen, ein Arbeitsbereichsobjekt zu schließen, während datenbankobjekte geöffnet sind, schließt der Vorgang alle Datenbankobjekte, die zu diesem bestimmten Arbeitsbereichsobjekt gehören, was dazu führen kann, dass nicht gesperrte Recordsetobjekte geschlossen werden. Wenn Sie das Datenbankobjekt nicht schließen, meldet MFC einen Assertionsfehler in Debugbuilds.
Wenn das Datenbankobjekt außerhalb des Bereichs einer Funktion definiert ist und Sie die Funktion beenden, ohne sie zu schließen, bleibt das Datenbankobjekt geöffnet, bis es explizit geschlossen wurde oder das Modul, in dem es definiert ist, außerhalb des Gültigkeitsbereichs liegt.
CDaoDatabase::Create
So erstellen Sie einen neuen Microsoft Jet (. MDB)-Datenbank, rufen Sie diese Memberfunktion auf, nachdem Sie ein CDaoDatabase
Objekt erstellt haben.
virtual void Create(
LPCTSTR lpszName,
LPCTSTR lpszLocale = dbLangGeneral,
int dwOptions = 0);
Parameter
lpszName
Ein Zeichenfolgenausdruck, der den Namen der Datenbankdatei darstellt, die Sie erstellen. Dabei kann es sich um den vollständigen Pfad und Dateinamen wie "C:\\MYDB" sein. MDB". Sie müssen einen Namen angeben. Wenn Sie keine Dateinamenerweiterung angeben, . MDB wird angefügt. Wenn Ihr Netzwerk die einheitliche Benennungskonvention (UNC) unterstützt, können Sie auch einen Netzwerkpfad angeben, z. B. "\\\MYSERVER\\MYSHARE\\MYDIR\\MYDB". Nur Microsoft Jet (. MDB)-Datenbankdateien können mithilfe dieser Memberfunktion erstellt werden. (Doppelte Umgekehrte Schrägstriche sind in Zeichenfolgenliteralen erforderlich, da "\" das C++-Escapezeichen ist.)
lpszLocale
Ein Zeichenfolgenausdruck, der zum Angeben der Sortierreihenfolge zum Erstellen der Datenbank verwendet wird. Der Standardwert ist dbLangGeneral
. Dabei sind folgende Werte möglich:
dbLangGeneral
Englisch, Deutsch, Französisch, Portugiesisch, Italienisch und Modern SpanischdbLangArabic
ArabischdbLangCyrillic
RussischdbLangCzech
TschechischdbLangDutch
HolländischdbLangGreek
GriechischdbLangHebrew
HebräischdbLangHungarian
UngarischdbLangIcelandic
IsländischdbLangNordic
Nordische Sprachen (nur Microsoft Jet-Datenbankmodul, Version 1.0)dbLangNorwdan
Norwegisch und DänischdbLangPolish
PolnischdbLangSpanish
Traditionelles SpanischdbLangSwedfin
Schwedisch und FinnischdbLangTurkish
Türkisch
dwOptions
Eine ganze Zahl, die mindestens eine Option angibt. Dabei sind folgende Werte möglich:
dbEncrypt
Erstellen Sie eine verschlüsselte Datenbank.dbVersion10
Erstellen Sie eine Datenbank mit Microsoft Jet-Datenbank, Version 1.0.dbVersion11
Erstellen Sie eine Datenbank mit Microsoft Jet-Datenbank, Version 1.1.dbVersion20
Erstellen Sie eine Datenbank mit Microsoft Jet-Datenbank, Version 2.0.dbVersion30
Erstellen Sie eine Datenbank mit Microsoft Jet-Datenbank, Version 3.0.
Wenn Sie die Verschlüsselungskonstante weglassen, wird eine unverschlüsselte Datenbank erstellt. Sie können nur eine Versionskonstante angeben. Wenn Sie eine Versionskonstante weglassen, wird eine Datenbank erstellt, die die Microsoft Jet-Datenbank Version 3.0 verwendet.
Achtung
Wenn eine Datenbank nicht verschlüsselt ist, ist es möglich, auch wenn Sie die Benutzer-/Kennwortsicherheit implementieren, die Binäre Datenträgerdatei, die die Datenbank darstellt, direkt zu lesen.
Hinweise
Create
erstellt die Datenbankdatei und das zugrunde liegende DAO-Datenbankobjekt und initialisiert das C++-Objekt. Das Objekt wird an die Databases-Auflistung des zugeordneten Arbeitsbereichs angefügt. Das Datenbankobjekt befindet sich in einem geöffneten Zustand; rufen Sie nicht Open*
nach Create
.
Hinweis
Mit Create
, können Sie nur Microsoft Jet (. MDB)-Datenbanken. Sie können keine ISAM-Datenbanken oder ODBC-Datenbanken erstellen.
CDaoDatabase::CreateRelation
Rufen Sie diese Memberfunktion auf, um eine Beziehung zwischen einem oder mehreren Feldern in einer Primärtabelle in der Datenbank und mindestens einem Feld in einer Fremdtabelle (einer anderen Tabelle in der Datenbank) herzustellen.
void CreateRelation(
LPCTSTR lpszName,
LPCTSTR lpszTable,
LPCTSTR lpszForeignTable,
long lAttributes,
LPCTSTR lpszField,
LPCTSTR lpszForeignField);
void CreateRelation(CDaoRelationInfo& relinfo);
Parameter
lpszName
Der eindeutige Name des Relation-Objekts. Der Name muss mit einem Buchstaben beginnen und darf maximal 40 Zeichen enthalten. Sie kann Zahlen und Unterstriche enthalten, aber keine Interpunktion oder Leerzeichen enthalten.
lpszTable
Der Name der Primärtabelle in der Beziehung. Wenn die Tabelle nicht vorhanden ist, löst MFC eine Ausnahme vom Typ CDaoException aus.
lpszForeignTable
Der Name der Fremdtabelle in der Beziehung. Wenn die Tabelle nicht vorhanden ist, löst MFC eine Ausnahme vom Typ CDaoException
aus.
lAttributes
Ein langer Wert, der Informationen zum Beziehungstyp enthält. Sie können diesen Wert verwenden, um unter anderem die referenzielle Integrität zu erzwingen. Sie können den Bitweise-OR-Operator (|
) verwenden, um einen der folgenden Werte zu kombinieren (sofern die Kombination sinnvoll ist):
dbRelationUnique
Die Beziehung ist 1:1.dbRelationDontEnforce
Die Beziehung wird nicht erzwungen (keine referenzielle Integrität).dbRelationInherited
Beziehung ist in einer nicht aktuellen Datenbank vorhanden, die die beiden angefügten Tabellen enthält.dbRelationUpdateCascade
Aktualisierungen werden kaskadiert (weitere Informationen zu Kaskaden finden Sie in den Hinweisen).dbRelationDeleteCascade
Löschvorgänge werden kaskadiert.
lpszField
Ein Zeiger auf eine mit Null beendete Zeichenfolge mit dem Namen eines Felds in der Primärtabelle (benannt durch lpszTable).
lpszForeignField
Ein Zeiger auf eine mit Null beendete Zeichenfolge, die den Namen eines Felds in der Fremdtabelle enthält (benannt durch lpszForeignTable).
relinfo
Ein Verweis auf ein CDaoRelationInfo -Objekt, das Informationen zu der Beziehung enthält, die Sie erstellen möchten.
Hinweise
Die Beziehung kann keine Abfrage oder eine angefügte Tabelle aus einer externen Datenbank umfassen.
Verwenden Sie die erste Version der Funktion, wenn die Beziehung ein Feld in jeder der beiden Tabellen umfasst. Verwenden Sie die zweite Version, wenn die Beziehung mehrere Felder umfasst. Die maximale Anzahl von Feldern in einer Beziehung beträgt 14.
Diese Aktion erstellt ein zugrunde liegendes DAO-Beziehungsobjekt, dies ist jedoch ein MFC-Implementierungsdetails, da die Kapselung von Beziehungsobjekten in der Klasse CDaoDatabase
enthalten ist. MFC liefert keine Klasse für Beziehungen.
Wenn Sie die Attribute des Relation-Objekts zum Aktivieren von Kaskadenvorgängen festlegen, aktualisiert oder löscht das Datenbankmodul Datensätze in einer oder mehreren anderen Tabellen, wenn Änderungen an verwandten Primärschlüsseltabellen vorgenommen werden.
Angenommen, Sie richten eine Löschweitergabebeziehung zwischen einer Tabelle "Customers" und einer Tabelle "Orders" ein. Wenn Sie Datensätze aus der Tabelle "Kunden" löschen, werden Datensätze in der Tabelle "Bestellungen" im Zusammenhang mit diesem Kunden ebenfalls gelöscht. Wenn Sie außerdem Löschbeziehungen zwischen der Tabelle "Bestellungen" und anderen Tabellen erstellen, werden Datensätze aus diesen Tabellen automatisch gelöscht, wenn Sie Datensätze aus der Tabelle "Kunden" löschen.
Verwandte Informationen finden Sie im Thema "CreateRelation-Methode" in der DAO-Hilfe.
CDaoDatabase::D eleteQueryDef
Rufen Sie diese Memberfunktion auf, um die angegebene Abfrage (gespeicherte Abfrage) aus der QueryDefs-Auflistung des CDaoDatabase
Objekts zu löschen.
void DeleteQueryDef(LPCTSTR lpszName);
Parameter
lpszName
Der Name der zu löschenden gespeicherten Abfrage.
Hinweise
Anschließend wird diese Abfrage nicht mehr in der Datenbank definiert.
Informationen zum Erstellen von Querydef-Objekten finden Sie unter der Klasse CDaoQueryDef. Ein querydef-Objekt wird einem bestimmten CDaoDatabase
Objekt zugeordnet, wenn Sie das CDaoQueryDef
Objekt erstellen, und übergibt es einen Zeiger auf das Datenbankobjekt.
CDaoDatabase::D eleteRelation
Rufen Sie diese Memberfunktion auf, um eine vorhandene Beziehung aus der Relations-Auflistung des Datenbankobjekts zu löschen.
void DeleteRelation(LPCTSTR lpszName);
Parameter
lpszName
Der Name der zu löschenden Beziehung.
Hinweise
Danach ist die Beziehung nicht mehr vorhanden.
Verwandte Informationen finden Sie im Thema "Delete Method" in der DAO-Hilfe.
CDaoDatabase::D eleteTableDef
Rufen Sie diese Memberfunktion auf, um die angegebene Tabelle und alle zugehörigen Daten aus der TableDefs-Auflistung des CDaoDatabase
Objekts zu löschen.
void DeleteTableDef(LPCTSTR lpszName);
Parameter
lpszName
Der Name der zu löschenden Tabelle.
Hinweise
Anschließend wird diese Tabelle nicht mehr in der Datenbank definiert.
Hinweis
Achten Sie darauf, systemtabellen nicht zu löschen.
Informationen zum Erstellen von Tabledef-Objekten finden Sie unter CDaoTableDef.for information about creating tabledef objects, see class CDaoTableDef. Ein tabledef-Objekt wird einem bestimmten CDaoDatabase
Objekt zugeordnet, wenn Sie das CDaoTableDef
Objekt erstellen, und übergibt es einen Zeiger auf das Datenbankobjekt.
Verwandte Informationen finden Sie im Thema "Delete Method" in der DAO-Hilfe.
CDaoDatabase::Execute
Rufen Sie diese Memberfunktion auf, um eine Aktionsabfrage auszuführen oder eine SQL-Anweisung in der Datenbank auszuführen.
void Execute(
LPCTSTR lpszSQL,
int nOptions = dbFailOnError);
Parameter
lpszSQL
Zeigen Sie auf eine mit Null beendete Zeichenfolge, die einen gültigen SQL-Befehl enthält, der ausgeführt werden soll.
nOptions
Eine ganze Zahl, die Optionen im Zusammenhang mit der Integrität der Abfrage angibt. Sie können den Bitweise-OR-Operator (|
) verwenden, um eine der folgenden Konstanten zu kombinieren, sofern die Kombination sinnvoll ist. Sie würden z. B. nicht dbInconsistent
mit dbConsistent
:
dbDenyWrite
Verweigern der Schreibberechtigung für andere Benutzer.dbInconsistent
(Standard) Inkonsistente Updates.dbConsistent
Konsistente Updates.dbSQLPassThrough
SQL-Pass-Through. Bewirkt, dass die SQL-Anweisung zur Verarbeitung an eine ODBC-Datenquelle übergeben wird.dbFailOnError
Führen Sie ein Rollback von Updates durch, wenn ein Fehler auftritt.dbSeeChanges
Generieren Sie einen Laufzeitfehler, wenn ein anderer Benutzer Daten ändert, die Sie bearbeiten.
Hinweis
Wenn beide dbInconsistent
enthalten sind oder dbConsistent
keines enthalten ist, ist das Ergebnis die Standardeinstellung. Eine Erläuterung dieser Konstanten finden Sie im Thema "Execute Method" in der DAO-Hilfe.
Hinweise
Execute
funktioniert nur für Aktionsabfragen oder SQL-Pass-Through-Abfragen, die keine Ergebnisse zurückgeben. Es funktioniert nicht für Auswahlabfragen, die Datensätze zurückgeben.
Eine Definition und Informationen zu Aktionsabfragen finden Sie in den Themen "Aktionsabfrage" und "Execute-Methode" in der DAO-Hilfe.
Tipp
Angesichts einer syntaktisch korrekten SQL-Anweisung und ordnungsgemäßen Berechtigungen schlägt die Execute
Memberfunktion nicht fehl, auch wenn keine einzelne Zeile geändert oder gelöscht werden kann. Verwenden Sie daher immer die Option, wenn Sie die dbFailOnError
Execute
Memberfunktion verwenden, um eine Aktualisierungs- oder Löschabfrage auszuführen. Diese Option bewirkt, dass MFC eine Ausnahme vom Typ "CDaoException " auslöst und alle erfolgreichen Änderungen zurückgesetzt, wenn alle betroffenen Datensätze gesperrt sind und nicht aktualisiert oder gelöscht werden können. Beachten Sie, dass Sie immer anrufen GetRecordsAffected
können, um zu sehen, wie viele Datensätze betroffen waren.
Rufen Sie die GetRecordsAffected-Memberfunktion des Datenbankobjekts auf, um die Anzahl der Datensätze zu ermitteln, die vom letzten Execute
Aufruf betroffen sind. Gibt beispielsweise GetRecordsAffected
Informationen zur Anzahl der gelöschten, aktualisierten oder eingefügten Datensätze zurück, wenn eine Aktionsabfrage ausgeführt wird. Die zurückgegebene Anzahl spiegelt keine Änderungen in verwandten Tabellen wider, wenn Aktualisierungen oder Löschweitergaben wirksam sind.
Execute
gibt kein Recordset zurück. Die Verwendung Execute
in einer Abfrage, die Datensätze auswählt, bewirkt, dass MFC eine Ausnahme vom Typ CDaoException
auslöst. (Es gibt keine ExecuteSQL
Memberfunktion analog zu CDatabase::ExecuteSQL
.)
CDaoDatabase::GetConnect
Rufen Sie diese Memberfunktion auf, um die Verbindungszeichenfolge abzurufen, die zum Verbinden des CDaoDatabase
Objekts mit einer ODBC- oder ISAM-Datenbank verwendet wird.
CString GetConnect();
Rückgabewert
Die Verbindungszeichenfolge, wenn Open für eine ODBC-Datenquelle erfolgreich aufgerufen wurde; andernfalls eine leere Zeichenfolge. Für einen Microsoft Jet (. MDB)-Datenbank ist die Zeichenfolge immer leer, es sei denn, Sie legen sie für die Verwendung mit der dbSQLPassThrough
Option "Ausführen "-Memberfunktion fest oder werden beim Öffnen eines Recordsets verwendet.
Hinweise
Die Zeichenfolge stellt Informationen zur Quelle einer geöffneten Datenbank oder einer Datenbank bereit, die in einer Pass-Through-Abfrage verwendet wird. Die Verbindungszeichenfolge besteht aus einem Datenbanktypbezeichner und null oder mehr Parametern, die durch Semikolons getrennt sind.
Hinweis
Die Verwendung der MFC DAO-Klassen zum Herstellen einer Verbindung mit einer Datenquelle über ODBC ist weniger effizient als die Verbindung über eine angefügte Tabelle.
Hinweis
Die Verbindungszeichenfolge wird verwendet, um bei Bedarf zusätzliche Informationen an ODBC- und bestimmte ISAM-Treiber zu übergeben. Es wird nicht für . MDB-Datenbanken. Bei Microsoft Jet-Datenbankbasistabellen ist die Verbindungszeichenfolge eine leere Zeichenfolge ("") mit Ausnahme der Verwendung für eine SQL-Pass-Through-Abfrage, wie unter "Rückgabewert oben" beschrieben.
Eine Beschreibung der Erstellung des Verbindungszeichenfolge finden Sie in der Open-Member-Funktion. Nachdem die Verbindungszeichenfolge im Open
Aufruf festgelegt wurde, können Sie ihn später verwenden, um die Einstellung zu überprüfen, um den Typ, den Pfad, die Benutzer-ID, das Kennwort oder die ODBC-Datenquelle der Datenbank zu bestimmen.
CDaoDatabase::GetName
Rufen Sie diese Memberfunktion auf, um den Namen der aktuell geöffneten Datenbank abzurufen, bei der es sich um den Namen einer vorhandenen Datenbankdatei oder um den Namen einer registrierten ODBC-Datenquelle handelt.
CString GetName();
Rückgabewert
Der vollständige Pfad und Dateiname der Datenbank, wenn die Datenbank erfolgreich verläuft; andernfalls ein leeres CString.
Hinweise
Wenn Ihr Netzwerk die einheitliche Benennungskonvention (UNC) unterstützt, können Sie auch einen Netzwerkpfad angeben, z. B. "\\\\MYSERVER\\MYSHARE\\MYDIR\\MYDB". MDB". (Doppelte Umgekehrte Schrägstriche sind in Zeichenfolgenliteralen erforderlich, da "\" das C++-Escapezeichen ist.)
Sie können z. B. diesen Namen in einer Überschrift anzeigen. Wenn ein Fehler auftritt, während der Name abgerufen wird, löst MFC eine Ausnahme vom Typ CDaoException aus.
Hinweis
Um eine bessere Leistung zu erzielen, wenn auf externe Datenbanken zugegriffen wird, empfehlen wir, externe Datenbanktabellen an eine Microsoft Jet-Datenbank anzufügen (. MDB) statt eine direkte Verbindung mit der Datenquelle herzustellen.
Der Datenbanktyp wird durch die Datei oder das Verzeichnis angegeben, auf die der Pfad verweist, wie folgt:
Pfadname verweist auf.. | Datenbanktyp |
---|---|
. MDB-Datei | Microsoft Jet-Datenbank (Microsoft Access) |
Verzeichnis, das enthält. DBF-Datei(n) | dBASE-Datenbank |
Verzeichnis, das .XLS Datei enthält | Microsoft Excel-Datenbank |
Verzeichnis, das enthält. PDX-Datei(n) | Paradox-Datenbank |
Verzeichnis, das entsprechend formatierte Textdateien enthält | Textformatdatenbank |
Bei ODBC-Datenbanken wie SQL Server und Oracle identifiziert die Verbindungszeichenfolge der Datenbank einen Datenquellennamen (Data Source Name, DSN), der von ODBC registriert ist.
CDaoDatabase::GetQueryDefCount
Rufen Sie diese Memberfunktion auf, um die Anzahl der abfragen abzurufen, die in der QueryDefs-Auflistung der Datenbank definiert sind.
short GetQueryDefCount();
Rückgabewert
Die Anzahl der in der Datenbank definierten Abfragen.
Hinweise
GetQueryDefCount
ist nützlich, wenn Sie alle Querydefs in der QueryDefs-Auflistung durchlaufen müssen. Informationen zu einer bestimmten Abfrage in der Auflistung finden Sie unter GetQueryDefInfo.
CDaoDatabase::GetQueryDefInfo
Rufen Sie diese Memberfunktion auf, um verschiedene Arten von Informationen zu einer abfrage abzurufen, die in der Datenbank definiert ist.
void GetQueryDefInfo(
int nIndex,
CDaoQueryDefInfo& querydefinfo,
DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
void GetQueryDefInfo(
LPCTSTR lpszName,
CDaoQueryDefInfo& querydefinfo,
DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
Parameter
nIndex
Der Index der vordefinierten Abfrage in der QueryDefs-Auflistung der Datenbank für die Suche nach Index.
querydefinfo
Ein Verweis auf ein CDaoQueryDefInfo -Objekt, das die angeforderten Informationen zurückgibt.
dwInfoOptions
Optionen, die angeben, welche Informationen über das abzurufende Recordset-Objekt enthalten. Die verfügbaren Optionen werden hier zusammen mit dem aufgeführt, was dazu führt, dass die Funktion über das Recordset zurückgegeben wird:
AFX_DAO_PRIMARY_INFO (Standard) Name, Typ
AFX_DAO_SECONDARY_INFO Primäre Informationen plus: Erstellungsdatum, Datum der letzten Aktualisierung, Gibt Datensätze zurück, aktualisierbar
AFX_DAO_ALL_INFO Primäre und sekundäre Informationen plus: SQL, Connect, ODBCTimeout
lpszName
Eine Zeichenfolge, die den Namen einer abfrage enthält, die in der Datenbank definiert ist, um nach Namen nachschlagen zu können.
Hinweise
Es werden zwei Versionen der Funktion bereitgestellt, sodass Sie eine Abfrage entweder nach Index in der QueryDefs-Auflistung der Datenbank oder nach dem Namen der Abfrage auswählen können.
Eine Beschreibung der in querydefinfo zurückgegebenen Informationen finden Sie in der CDaoQueryDefInfo-Struktur. Diese Struktur enthält Elemente, die den oben aufgeführten Informationselementen in der Beschreibung von dwInfoOptions entsprechen. Wenn Sie eine Informationsstufe anfordern, erhalten Sie auch alle vorherigen Informationsstufen.
CDaoDatabase::GetQueryTimeout
Rufen Sie diese Memberfunktion auf, um die aktuelle Anzahl von Sekunden abzurufen, um zuzulassen, bevor nachfolgende Vorgänge in der verbundenen Datenbank timeout sind.
short GetQueryTimeout();
Rückgabewert
Eine kurze ganze Zahl, die den Timeoutwert in Sekunden enthält.
Hinweise
Ein Vorgang kann aufgrund von Netzwerkzugriffsproblemen, übermäßiger Abfrageverarbeitungszeit usw. zu einem Timeout führen. Während die Einstellung wirksam ist, wirkt sie sich auf alle geöffneten Vorgänge aus, fügen Sie neue, aktualisierungs- und Löschvorgänge für alle Datensätze hinzu, die diesem CDaoDatabase
Objekt zugeordnet sind. Sie können die aktuelle Timeouteinstellung ändern, indem Sie SetQueryTimeout aufrufen. Das Ändern des Abfragetimeoutwerts für ein Recordset nach dem Öffnen ändert den Wert für das Recordset nicht. Beispielsweise verwenden nachfolgende Verschiebungsvorgänge nicht den neuen Wert. Der Standardwert wird zunächst festgelegt, wenn das Datenbankmodul initialisiert wird.
Der Standardwert für Abfragetimeouts stammt aus der Windows-Registrierung. Wenn keine Registrierungseinstellung vorhanden ist, beträgt die Standardeinstellung 60 Sekunden. Nicht alle Datenbanken unterstützen die Möglichkeit, einen Abfragetimeoutwert festzulegen. Wenn Sie einen Abfragetimeoutwert von 0 festlegen, tritt kein Timeout auf; und die Kommunikation mit der Datenbank reagiert möglicherweise nicht mehr. Dieses Verhalten kann während der Entwicklung hilfreich sein. Wenn der Aufruf fehlschlägt, löst MFC eine Ausnahme vom Typ CDaoException aus.
Verwandte Informationen finden Sie im Thema "QueryTimeout-Eigenschaft" in der DAO-Hilfe.
CDaoDatabase::GetRecordsAffected
Rufen Sie diese Memberfunktion auf, um die Anzahl der Datensätze zu ermitteln, die vom letzten Aufruf der Execute-Memberfunktion betroffen sind.
long GetRecordsAffected();
Rückgabewert
Eine lange ganze Zahl, die die Anzahl der betroffenen Datensätze enthält.
Hinweise
Der zurückgegebene Wert enthält die Anzahl der gelöschten, aktualisierten oder eingefügten Datensätze einer Aktionsabfrage, die mit Execute
ausgeführt wird. Die zurückgegebene Anzahl spiegelt keine Änderungen in verwandten Tabellen wider, wenn Aktualisierungen oder Löschweitergaben wirksam sind.
Verwandte Informationen finden Sie im Thema "RecordsAffected Property" in der DAO-Hilfe.
CDaoDatabase::GetRelationCount
Rufen Sie diese Memberfunktion auf, um die Anzahl der Beziehungen abzurufen, die zwischen Tabellen in der Datenbank definiert sind.
short GetRelationCount();
Rückgabewert
Die Anzahl der Beziehungen, die zwischen Tabellen in der Datenbank definiert sind.
Hinweise
GetRelationCount
ist nützlich, wenn Sie alle definierten Beziehungen in der Relations-Auflistung der Datenbank durchlaufen müssen. Informationen zu einer bestimmten Beziehung in der Sammlung finden Sie unter GetRelationInfo.
Um das Konzept einer Beziehung zu veranschaulichen, betrachten Sie eine Tabelle "Lieferanten" und eine Tabelle "Artikel", die möglicherweise eine 1:n-Beziehung aufweist. In dieser Beziehung kann ein Lieferant mehrere Produkte bereitstellen. Andere Beziehungen sind 1:1 und n:n.
CDaoDatabase::GetRelationInfo
Rufen Sie diese Memberfunktion auf, um Informationen zu einer bestimmten Beziehung in der Relations-Auflistung der Datenbank abzurufen.
void GetRelationInfo(
int nIndex,
CDaoRelationInfo& relinfo,
DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
void GetRelationInfo(
LPCTSTR lpszName,
CDaoRelationInfo& relinfo,
DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
Parameter
nIndex
Der Index des Relation-Objekts in der Relations-Auflistung der Datenbank für die Suche nach Index.
relinfo
Ein Verweis auf ein CDaoRelationInfo -Objekt, das die angeforderten Informationen zurückgibt.
dwInfoOptions
Optionen, die angeben, welche Informationen zu der abzurufenden Beziehung enthalten. Die verfügbaren Optionen werden hier zusammen mit dem aufgeführt, was dazu führt, dass die Funktion über die Beziehung zurückgegeben wird:
AFX_DAO_PRIMARY_INFO (Standard) Name, Tabelle, Fremdtabelle
AFX_DAO_SECONDARY_INFO Attribute, Feldinformationen
Die Feldinformationen sind ein CDaoRelationFieldInfo -Objekt, das die Felder aus der primären Tabelle enthält, die in der Beziehung beteiligt ist.
lpszName
Eine Zeichenfolge, die den Namen des Relation-Objekts für die Suche nach Namen enthält.
Hinweise
Zwei Versionen dieser Funktion bieten Zugriff entweder nach Index oder nach Name. Eine Beschreibung der in relinfo zurückgegebenen Informationen finden Sie in der CDaoRelationInfo-Struktur. Diese Struktur enthält Elemente, die den oben aufgeführten Informationselementen in der Beschreibung von dwInfoOptions entsprechen. Wenn Sie Informationen auf einer Ebene anfordern, erhalten Sie auch Informationen auf allen vorherigen Ebenen.
Hinweis
Wenn Sie die Attribute des Relation-Objekts zum Aktivieren von Kaskadenvorgängen (dbRelationUpdateCascades
oder dbRelationDeleteCascades
) festlegen, aktualisiert oder löscht das Microsoft Jet-Datenbankmodul Datensätze in einer oder mehreren anderen Tabellen, wenn Änderungen an verwandten Primärschlüsseltabellen vorgenommen werden. Angenommen, Sie richten eine Löschweitergabebeziehung zwischen einer Tabelle "Customers" und einer Tabelle "Orders" ein. Wenn Sie Datensätze aus der Tabelle "Kunden" löschen, werden Datensätze in der Tabelle "Bestellungen" im Zusammenhang mit diesem Kunden ebenfalls gelöscht. Wenn Sie außerdem Löschbeziehungen zwischen der Tabelle "Bestellungen" und anderen Tabellen erstellen, werden Datensätze aus diesen Tabellen automatisch gelöscht, wenn Sie Datensätze aus der Tabelle "Kunden" löschen.
CDaoDatabase::GetTableDefCount
Rufen Sie diese Memberfunktion auf, um die Anzahl der in der Datenbank definierten Tabellen abzurufen.
short GetTableDefCount();
Rückgabewert
Die Anzahl der tabellendefs, die in der Datenbank definiert sind.
Hinweise
GetTableDefCount
ist nützlich, wenn Sie alle TableDefs in der TableDefs-Auflistung der Datenbank durchlaufen müssen. Informationen zu einer bestimmten Tabelle in der Auflistung finden Sie unter GetTableDefInfo.
CDaoDatabase::GetTableDefInfo
Rufen Sie diese Memberfunktion auf, um verschiedene Arten von Informationen zu einer in der Datenbank definierten Tabelle abzurufen.
void GetTableDefInfo(
int nIndex,
CDaoTableDefInfo& tabledefinfo,
DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
void GetTableDefInfo(
LPCTSTR lpszName,
CDaoTableDefInfo& tabledefinfo,
DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
Parameter
nIndex
Der Index des tabledef-Objekts in der TableDefs-Auflistung der Datenbank für die Suche nach Index.
tabledefinfo
Ein Verweis auf ein CDaoTableDefInfo -Objekt, das die angeforderten Informationen zurückgibt.
dwInfoOptions
Optionen, die angeben, welche Informationen zu der abzurufenden Tabelle enthalten sind. Die verfügbaren Optionen werden hier zusammen mit dem aufgeführt, was dazu führt, dass die Funktion über die Beziehung zurückgegeben wird:
AFX_DAO_PRIMARY_INFO (Standard) Name, Aktualisierbar, Attribute
AFX_DAO_SECONDARY_INFO Primäre Informationen plus: Erstellungsdatum, Datum der letzten Aktualisierung, Quelltabellenname, Verbinden
AFX_DAO_ALL_INFO Primäre und sekundäre Informationen plus: Gültigkeitsprüfungsregel, Gültigkeitstext, Datensatzanzahl
lpszName
Der Name des tabledef-Objekts für die Nachschlagevorgang nach Name.
Hinweise
Es werden zwei Versionen der Funktion bereitgestellt, damit Sie eine Tabelle entweder nach Index in der TableDefs-Auflistung der Datenbank oder nach dem Namen der Tabelle auswählen können.
Eine Beschreibung der in tabledefinfo zurückgegebenen Informationen finden Sie in der CDaoTableDefInfo-Struktur. Diese Struktur enthält Elemente, die den oben aufgeführten Informationselementen in der Beschreibung von dwInfoOptions entsprechen. Wenn Sie Informationen auf einer Ebene anfordern, erhalten Sie auch Informationen zu allen vorherigen Ebenen.
Hinweis
Die Option AFX_DAO_ALL_INFO enthält Informationen, die langsam zu erhalten sind. In diesem Fall kann das Zählen der Datensätze in der Tabelle sehr zeitaufwändig sein, wenn viele Datensätze vorhanden sind.
CDaoDatabase::GetVersion
Rufen Sie diese Memberfunktion auf, um die Version der Microsoft Jet-Datenbankdatei zu ermitteln.
CString GetVersion();
Rückgabewert
Eine CString , die die Version der Datenbankdatei angibt, die dem Objekt zugeordnet ist.
Hinweise
Der zurückgegebene Wert stellt die Versionsnummer in der Form "major.minor" dar; Beispiel: "3.0". Die Produktversionsnummer (z. B. 3.0) besteht aus der Versionsnummer (3), einem Punkt und der Versionsnummer (0). Die aktuellen Versionen sind 1.0, 1.1, 2.0 und 3.0.
Verwandte Informationen finden Sie im Thema "Version Property" in der DAO-Hilfe.
CDaoDatabase::IsOpen
Rufen Sie diese Memberfunktion auf, um zu bestimmen, ob das CDaoDatabase
Objekt derzeit in einer Datenbank geöffnet ist.
BOOL IsOpen() const;
Rückgabewert
Nonzero, wenn das CDaoDatabase
Objekt zurzeit geöffnet ist; andernfalls 0.
Hinweise
CDaoDatabase::m_pDAODatabase
Enthält einen Zeiger auf die OLE-Schnittstelle für das DAO-Datenbankobjekt, das dem CDaoDatabase
Objekt zugrunde liegt.
Hinweise
Verwenden Sie diesen Zeiger, wenn Sie direkt auf die DAO-Schnittstelle zugreifen müssen.
Informationen zum direkten Aufrufen von DAO finden Sie in technischem Hinweis 54.
CDaoDatabase::m_pWorkspace
Enthält einen Zeiger auf das CDaoWorkspace -Objekt, das das Datenbankobjekt enthält.
Hinweise
Verwenden Sie diesen Zeiger, wenn Sie direkt auf den Arbeitsbereich zugreifen müssen. Um z. B. Zeiger auf andere Datenbankobjekte in der Databases-Auflistung des Arbeitsbereichs abzurufen.
CDaoDatabase::Open
Sie müssen diese Memberfunktion aufrufen, um ein neu erstelltes CDaoDatabase
Objekt zu initialisieren, das eine vorhandene Datenbank darstellt.
virtual void Open(
LPCTSTR lpszName,
BOOL bExclusive = FALSE,
BOOL bReadOnly = FALSE,
LPCTSTR lpszConnect = _T(""));
Parameter
lpszName
Ein Zeichenfolgenausdruck, der den Namen eines vorhandenen Microsoft Jet (. MDB) Datenbankdatei. Wenn der Dateiname über eine Erweiterung verfügt, ist er erforderlich. Wenn Ihr Netzwerk die einheitliche Benennungskonvention (UNIFORM Naming Convention, UNC) unterstützt, können Sie auch einen Netzwerkpfad angeben, z. B. "\\\MYSERVER\\MYSHARE\\MYDIR\\MYDB". MDB". (Doppelte Umgekehrte Schrägstriche sind in Zeichenfolgenliteralen erforderlich, da "\" das C++-Escapezeichen ist.)
Einige Überlegungen gelten bei der Verwendung von lpszName. Wenn dies der Fehler ist:
Bezieht sich auf eine Datenbank, die bereits für den exklusiven Zugriff durch einen anderen Benutzer geöffnet ist. MFC löst eine Ausnahme vom Typ CDaoException aus. Führen Sie diese Ausnahme aus, damit Der Benutzer wissen kann, dass die Datenbank nicht verfügbar ist.
Ist eine leere Zeichenfolge ("") und lpszConnect ist "ODBC;", ein Dialogfeld mit allen registrierten ODBC-Datenquellennamen wird angezeigt, damit der Benutzer eine Datenbank auswählen kann. Sie sollten direkte Verbindungen mit ODBC-Datenquellen vermeiden; verwenden Sie stattdessen eine angefügte Tabelle.
Andernfalls wird nicht auf einen vorhandenen Datenbank- oder gültigen ODBC-Datenquellennamen verwiesen, MFC löst eine Ausnahme vom Typ
CDaoException
aus.
Hinweis
Ausführliche Informationen zu DAO-Fehlercodes finden Sie im DAOERR. H-Datei. Verwandte Informationen finden Sie im Thema "Auffangbare Datenzugriffsfehler" in der DAO-Hilfe.
bExclusive
Ein boolescher Wert, der TRUE ist, wenn die Datenbank für exklusiven (nicht freigegebenen) Zugriff geöffnet werden soll, und FALSE, wenn die Datenbank für den freigegebenen Zugriff geöffnet werden soll. Wenn Sie dieses Argument weglassen, wird die Datenbank für den freigegebenen Zugriff geöffnet.
bReadOnly
Ein boolescher Wert, der TRUE ist, wenn die Datenbank für schreibgeschützten Zugriff geöffnet werden soll, und FALSE, wenn die Datenbank für Lese-/Schreibzugriff geöffnet werden soll. Wenn Sie dieses Argument weglassen, wird die Datenbank für Lese-/Schreibzugriff geöffnet. Alle abhängigen Recordsets erben dieses Attribut.
lpszConnect
Ein Zeichenfolgenausdruck, der zum Öffnen der Datenbank verwendet wird. Diese Zeichenfolge stellt die ODBC-Verbindungsargumente dar. Sie müssen die exklusiven und schreibgeschützten Argumente angeben, um eine Quellzeichenfolge anzugeben. Wenn es sich bei der Datenbank um eine Microsoft Jet-Datenbank (. MDB), diese Zeichenfolge ist leer (""). Die Syntax für den Standardwert – _T("") – bietet Portabilität für Unicode sowie ANSI-Builds Ihrer Anwendung.
Hinweise
Open
ordnet die Datenbank dem zugrunde liegenden DAO-Objekt zu. Sie können das Datenbankobjekt nicht verwenden, um Recordset-, Tabledef- oder Querydef-Objekte zu erstellen, bis sie initialisiert wird. Open
fügt das Datenbankobjekt an die Databases-Auflistung des zugeordneten Arbeitsbereichs an.
Verwenden Sie die Parameter wie folgt:
Wenn Sie einen Microsoft Jet (. MDB) Datenbank, verwenden Sie den lpszName-Parameter und übergeben eine leere Zeichenfolge für den lpszConnect-Parameter oder übergeben sie eine Kennwortzeichenfolge des Formulars "; PWD=password", wenn die Datenbank kennwortgeschützt ist (. Nur MDB-Datenbanken).
Wenn Sie eine ODBC-Datenquelle öffnen, übergeben Sie eine gültige ODBC-Verbindungszeichenfolge in lpszConnect und eine leere Zeichenfolge in lpszName.
Verwandte Informationen finden Sie im Thema "OpenDatabase-Methode" in der DAO-Hilfe.
Hinweis
Um eine bessere Leistung beim Zugriff auf externe Datenbanken, einschließlich ISAM-Datenbanken und ODBC-Datenquellen, zu erzielen, empfiehlt es sich, externe Datenbanktabellen an eine Microsoft Jet-Moduldatenbank anzufügen . MDB) statt eine direkte Verbindung mit der Datenquelle herzustellen.
Es ist möglich, dass bei einem Verbindungsversuch ein Timeout ausgeführt wird, wenn der DBMS-Host beispielsweise nicht verfügbar ist. Wenn der Verbindungsversuch fehlschlägt, Open
wird eine Ausnahme vom Typ "CDaoException" ausgelöst.
Die übrigen Hinweise gelten nur für ODBC-Datenbanken:
Wenn es sich bei der Datenbank um eine ODBC-Datenbank handelt und die Parameter in Ihrem Open
Aufruf nicht genügend Informationen enthalten, um die Verbindung herzustellen, öffnet der ODBC-Treiber ein Dialogfeld, um die erforderlichen Informationen vom Benutzer abzurufen. Wenn Sie aufrufenOpen
, wird Ihr Verbindungszeichenfolge, lpszConnect, privat gespeichert und ist durch Aufrufen der GetConnect-Memberfunktion verfügbar.
Wenn Sie möchten, können Sie Ihr eigenes Dialogfeld öffnen, bevor Sie aufrufenOpen
, um Informationen vom Benutzer zu erhalten, z. B. ein Kennwort, und fügen Sie diese Informationen zu den Verbindungszeichenfolge, an Open
die Sie übergeben. Oder Sie möchten die Verbindungszeichenfolge speichern, die Sie übergeben (vielleicht in der Windows-Registrierung), damit Sie es beim nächsten Aufrufen Open
der Anwendung für ein CDaoDatabase
Objekt wiederverwenden können.
Sie können auch die Verbindungszeichenfolge für mehrere Ebenen der Anmeldeautorisierung (jeweils für ein anderes CDaoDatabase
Objekt) verwenden oder um andere datenbankspezifische Informationen zu vermitteln.
CDaoDatabase::SetQueryTimeout
Rufen Sie diese Memberfunktion auf, um die Standardanzahl von Sekunden außer Kraft zu setzen, die vor nachfolgenden Vorgängen für das Timeout der verbundenen Datenbank zulässig sind.
void SetQueryTimeout(short nSeconds);
Parameter
nSeconds
Die Anzahl der Sekunden, die zugelassen werden sollen, bevor ein Abfrageversuch zu einem Zeitüberschreitungsversuch führen kann.
Hinweise
Ein Vorgang kann aufgrund von Netzwerkzugriffsproblemen, übermäßiger Abfrageverarbeitungszeit usw. ausfallen. Rufen Sie SetQueryTimeout
vor dem Öffnen des Recordsets oder vor dem Aufrufen der AddNew-, Update- oder Delete-Memberfunktionen des Recordsets auf, wenn Sie den Abfragetimeoutwert ändern möchten. Die Einstellung wirkt sich auf alle nachfolgenden Open-, , Update
und Delete
Aufrufe aller Recordsets aus, AddNew
die diesem CDaoDatabase
Objekt zugeordnet sind. Das Ändern des Abfragetimeoutwerts für ein Recordset nach dem Öffnen ändert den Wert für das Recordset nicht. Beispielsweise verwenden nachfolgende Verschiebungsvorgänge nicht den neuen Wert.
Der Standardwert für Abfragetimeouts beträgt 60 Sekunden. Nicht alle Datenbanken unterstützen die Möglichkeit, einen Abfragetimeoutwert festzulegen. Wenn Sie einen Abfragetimeoutwert von 0 festlegen, tritt kein Timeout auf; Die Kommunikation mit der Datenbank reagiert möglicherweise nicht mehr. Dieses Verhalten kann während der Entwicklung hilfreich sein.
Verwandte Informationen finden Sie im Thema "QueryTimeout-Eigenschaft" in der DAO-Hilfe.
Siehe auch
CObject-Klasse
Hierarchiediagramm
CDaoWorkspace-Klasse
CDaoRecordset-Klasse
CDaoTableDef-Klasse
CDaoQueryDef-Klasse
CDatabase-Klasse
CDaoException-Klasse