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 Executebetroffen 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 CDaoDatabaseverwenden 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 CDaoDatabaseObjekt. 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

CObject

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 Spanisch

  • dbLangArabic Arabisch

  • dbLangCyrillic Russisch

  • dbLangCzech Tschechisch

  • dbLangDutch Holländisch

  • dbLangGreek Griechisch

  • dbLangHebrew Hebräisch

  • dbLangHungarian Ungarisch

  • dbLangIcelandic Isländisch

  • dbLangNordic Nordische Sprachen (nur Microsoft Jet-Datenbankmodul, Version 1.0)

  • dbLangNorwdan Norwegisch und Dänisch

  • dbLangPolish Polnisch

  • dbLangSpanish Traditionelles Spanisch

  • dbLangSwedfin Schwedisch und Finnisch

  • dbLangTurkish 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 CDaoExceptionaus.

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 CDaoDatabaseenthalten 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 CDaoExceptionauslö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 Executeausgefü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 CDaoExceptionaus.

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 Opendie 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-, , Updateund Delete Aufrufe aller Recordsets aus, AddNewdie 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