Share via


CDaoDatabase-klasse

Opmerking

De Microsoft Foundation Classes-bibliotheek (MFC) wordt nog steeds ondersteund. We voegen echter geen functies meer toe of werken de documentatie bij.

Vertegenwoordigt een verbinding met een Access-database met behulp van Data Access Objects (DAO).

Opmerking

Data Access Object (DAO) wordt ondersteund via Office 2013. DAO 3.6 is de definitieve versie en is verouderd.

Syntaxis

class CDaoDatabase : public CObject

Leden

Openbare constructors

Naam Description
CDaoDatabase::CDaoDatabase Maakt een CDaoDatabase object. Aanroep Open om het object te verbinden met een database.

Openbare methoden

Naam Description
CDaoDatabase::CanTransact Retourneert niet-nul als de database transacties ondersteunt.
CDaoDatabase::CanUpdate Retourneert niet-nul als het CDaoDatabase object kan worden bijgewerkt (niet alleen-lezen).
CDaoDatabase::Close Hiermee sluit u de databaseverbinding.
CDaoDatabase::Maken Hiermee maakt u het onderliggende DAO-databaseobject en initialiseert u het CDaoDatabase object.
CDaoDatabase::CreateRelation Definieert een nieuwe relatie tussen de tabellen in de database.
CDaoDatabase::D eleteQueryDef Hiermee verwijdert u een querydef-object dat is opgeslagen in de querydefs-verzameling van de database.
CDaoDatabase::D eleteRelation Hiermee verwijdert u een bestaande relatie tussen tabellen in de database.
CDaoDatabase::D eleteTableDef Hiermee verwijdert u de definitie van een tabel in de database. Hiermee verwijdert u de werkelijke tabel en alle bijbehorende gegevens.
CDaoDatabase::Execute Hiermee wordt een actiequery uitgevoerd. Het aanroepen Execute van een query die resultaten retourneert, genereert een uitzondering.
CDaoDatabase::GetConnect Retourneert de verbindingsreeks die wordt gebruikt om het CDaoDatabase object te verbinden met een database. Wordt gebruikt voor ODBC.
CDaoDatabase::GetName Retourneert de naam van de database die momenteel in gebruik is.
CDaoDatabase::GetQueryDefCount Retourneert het aantal query's dat is gedefinieerd voor de database.
CDaoDatabase::GetQueryDefInfo Retourneert informatie over een opgegeven query die is gedefinieerd in de database.
CDaoDatabase::GetQueryTimeout Retourneert het aantal seconden waarna er een time-out optreedt voor databasequerybewerkingen. Is van invloed op alle volgende geopende bewerkingen, nieuwe bewerkingen toevoegen, bijwerken en bewerken en andere bewerkingen op ODBC-gegevensbronnen (alleen) zoals Execute aanroepen.
CDaoDatabase::GetRecordsAffected Retourneert het aantal records dat wordt beïnvloed door de laatste update, bewerking of toevoegbewerking of door een aanroep naar Execute.
CDaoDatabase::GetRelationCount Retourneert het aantal relaties dat is gedefinieerd tussen tabellen in de database.
CDaoDatabase::GetRelationInfo Retourneert informatie over een opgegeven relatie die is gedefinieerd tussen tabellen in de database.
CDaoDatabase::GetTableDefCount Retourneert het aantal tabellen dat is gedefinieerd in de database.
CDaoDatabase::GetTableDefInfo Retourneert informatie over een opgegeven tabel in de database.
CDaoDatabase::GetVersion Retourneert de versie van de database-engine die is gekoppeld aan de database.
CDaoDatabase::IsOpen Retourneert niet-nul als het CDaoDatabase object momenteel is verbonden met een database.
CDaoDatabase::Open Hiermee maakt u een verbinding met een database.
CDaoDatabase::SetQueryTimeout Hiermee stelt u het aantal seconden in waarna er een time-out optreedt voor databasequerybewerkingen (alleen in ODBC-gegevensbronnen). Is van invloed op alle volgende geopende bewerkingen, nieuwe bewerkingen toevoegen, bijwerken en verwijderen.

Leden van openbare gegevens

Naam Description
CDaoDatabase::m_pDAODatabase Een aanwijzer naar het onderliggende DAO-databaseobject.
CDaoDatabase::m_pWorkspace Een aanwijzer naar het CDaoWorkspace-object dat de database bevat en de transactieruimte definieert.

Opmerkingen

Zie de functie GetName-lid voor informatie over de ondersteunde databaseindelingen. U kunt een of meer CDaoDatabase objecten tegelijk actief hebben in een bepaalde werkruimte, vertegenwoordigd door een CDaoWorkspace-object . De werkruimte onderhoudt een verzameling geopende databaseobjecten, de databaseverzameling.

Usage

U kunt databaseobjecten impliciet maken wanneer u recordsetobjecten maakt. U kunt echter ook expliciet databaseobjecten maken. Ga op een van de volgende manieren te werk om een bestaande database expliciet te gebruiken met CDaoDatabase:

  • Maak een CDaoDatabase object, waarbij een aanwijzer wordt doorgegeven aan een geopend CDaoWorkspace-object .

  • Of maak een CDaoDatabase object zonder de werkruimte op te geven (MFC maakt een tijdelijk werkruimteobject).

Een nieuwe Microsoft Jet maken (. MDB) database, maak een CDaoDatabase object en roep de functie Create member aan . Bel nietOpen na Create.

Als u een bestaande database wilt openen, maakt u een CDaoDatabase object en roept u de open-lidfunctie aan.

Een van deze technieken voegt het DAO-databaseobject toe aan de verzameling Databases van de werkruimte en opent een verbinding met de gegevens. Wanneer u vervolgens CDaoRecordset-, CDaoTableDef- of CDaoQueryDef-objecten maakt voor gebruik op de verbonden database, geeft u de constructors voor deze objecten een aanwijzer door naar uw CDaoDatabase object. Wanneer u klaar bent met het gebruik van de verbinding, roept u de functie Lid sluiten aan en vernietigt u het CDaoDatabase object. Close sluit alle recordsets die u nog niet hebt gesloten.

Transactions

Verwerking van databasetransacties wordt geleverd op werkruimteniveau. Zie de functies BeginTrans, CommitTrans en Rollback-lid van klasse CDaoWorkspace.

ODBC-verbindingen

De aanbevolen manier om te werken met ODBC-gegevensbronnen (Open Database Base Connectivity) is door externe tabellen te koppelen aan een Microsoft Jet-database (.MDB).

Collections

Elke database onderhoudt zijn eigen verzamelingen van ingediendeef-, querydef-, recordset- en relationele objecten. Klasse CDaoDatabase levert lidfuncties voor het bewerken van deze objecten.

Opmerking

De objecten worden opgeslagen in DAO, niet in het MFC-databaseobject. MFC levert klassen voor ingediendeef-, querydef- en recordsetobjecten, maar niet voor relationele objecten.

Overnamehiërarchie

CObject

CDaoDatabase

Requirements

Koptekst: afxdao.h

CDaoDatabase::CanTransact

Roep deze lidfunctie aan om te bepalen of de database transacties toestaat.

BOOL CanTransact();

Retourwaarde

Niet-nul als de database transacties ondersteunt; anders 0.

Opmerkingen

Transacties worden beheerd in de werkruimte van de database.

CDaoDatabase::CanUpdate

Roep deze lidfunctie aan om te bepalen of het CDaoDatabase object updates toestaat.

BOOL CanUpdate();

Retourwaarde

Niet-nul als het CDaoDatabase object updates toestaat; anders 0, waarmee wordt aangegeven dat u TRUE hebt doorgegeven in bReadOnly wanneer u het CDaoDatabase object hebt geopend of dat de database zelf het kenmerk Alleen-lezen heeft. Zie de functie Lid openen.

Opmerkingen

Zie het onderwerp 'Updatable Property' in DAO Help voor informatie over database-updatability.

CDaoDatabase::CDaoDatabase

Maakt een CDaoDatabase object.

CDaoDatabase(CDaoWorkspace* pWorkspace = NULL);

Parameterwaarden

pWorkspace
Een aanwijzer naar het CDaoWorkspace object dat het nieuwe databaseobject bevat. Als u de standaardwaarde van NULL accepteert, maakt de constructor een tijdelijk CDaoWorkspace object dat gebruikmaakt van de standaard-DAO-werkruimte. U kunt een aanwijzer naar het werkruimteobject krijgen via het m_pWorkspace gegevenslid.

Opmerkingen

Als u na het maken van het object een nieuwe Microsoft Jet (. MDB)-database, roept de functie Lid maken van het object aan. Als u in plaats daarvan een bestaande database opent, roept u de functie Lid openen van het object aan.

Wanneer u klaar bent met het object, moet u de functie Close member aanroepen en het CDaoDatabase object vervolgens vernietigen.

Het is misschien handig om het CDaoDatabase object in te sluiten in uw documentklasse.

Opmerking

Er CDaoDatabase wordt ook impliciet een object gemaakt als u een CDaoRecordset-object opent zonder een aanwijzer door te geven aan een bestaand CDaoDatabase object. Dit databaseobject wordt gesloten wanneer u het recordset-object sluit.

CDaoDatabase::Close

Roep deze lidfunctie aan om de verbinding met een database te verbreken en open recordsets, tabledefs en querydefs te sluiten die aan de database zijn gekoppeld.

virtual void Close();

Opmerkingen

Het is raadzaam deze objecten zelf te sluiten voordat u deze lidfunctie aanroept. Als u een CDaoDatabase object sluit, wordt dit verwijderd uit de verzameling Databases in de gekoppelde werkruimte. Omdat Close het CDaoDatabase object niet wordt vernietigd, kunt u het object opnieuw gebruiken door dezelfde database of een andere database te openen.

Waarschuwing

Roep de functie Lid bijwerken aan (als er bewerkingen in behandeling zijn) en de Close lidfunctie op alle geopende recordsetobjecten voordat u een database sluit. Als u een functie afsluit waarmee CDaoRecordset of CDaoDatabase objecten op de stack worden gedeclareerd, wordt de database gesloten, gaan alle niet-opgeslagen wijzigingen verloren, worden alle in behandeling zijnde transacties teruggedraaid en gaan alle bewerkingen in behandeling naar uw gegevens verloren.

Waarschuwing

Als u een databaseobject probeert te sluiten terwijl recordsetobjecten zijn geopend of als u een werkruimteobject probeert te sluiten terwijl databaseobjecten die deel uitmaken van die specifieke werkruimte zijn geopend, worden deze recordsetobjecten gesloten en worden eventuele updates of bewerkingen teruggedraaid. Als u een werkruimteobject probeert te sluiten terwijl alle databaseobjecten die bij het object horen, zijn geopend, wordt met de bewerking alle databaseobjecten gesloten die tot dat specifieke werkruimteobject behoren. Dit kan ertoe leiden dat niet-gesloten recordsetobjecten worden gesloten. Als u het databaseobject niet sluit, rapporteert MFC een assertiefout in builds voor foutopsporing.

Als het databaseobject buiten het bereik van een functie is gedefinieerd en u de functie afsluit zonder deze te sluiten, blijft het databaseobject geopend totdat het expliciet is gesloten of de module waarin deze is gedefinieerd buiten het bereik valt.

CDaoDatabase::Maken

Een nieuwe Microsoft Jet maken (. MDB)-database, roept u deze lidfunctie aan nadat u een CDaoDatabase object hebt gemaakt.

virtual void Create(
    LPCTSTR lpszName,
    LPCTSTR lpszLocale = dbLangGeneral,
    int dwOptions = 0);

Parameterwaarden

lpszName
Een tekenreeksexpressie die de naam is van het databasebestand dat u maakt. Dit kan het volledige pad en de bestandsnaam zijn, zoals C:\\MYDB. MDB'. U moet een naam opgeven. Als u geen bestandsnaamextensie opgeeft, . MDB wordt toegevoegd. Als uw netwerk ondersteuning biedt voor de UNIFORM Naming Convention (UNC), kunt u ook een netwerkpad opgeven, zoals \\\MYSERVER\\MYSHARE\\MYDIR\\MYDB. Alleen Microsoft Jet (. MDB) databasebestanden kunnen worden gemaakt met behulp van deze lidfunctie. (Dubbele backslashes zijn vereist in letterlijke tekenreeksen omdat '\' het escapeteken C++ is.)

lpszLocale
Een tekenreeksexpressie die wordt gebruikt om de samenvouwvolgorde op te geven voor het maken van de database. De standaardwaarde is dbLangGeneral. Mogelijke waarden zijn:

  • dbLangGeneral Engels, Duits, Frans, Portugees, Italiaans en Modern Spaans

  • dbLangArabic Arabisch

  • dbLangCyrillic Russisch

  • dbLangCzech Tsjechisch

  • dbLangDutch Nederlands

  • dbLangGreek Grieks

  • dbLangHebrew Hebreeuws

  • dbLangHungarian Hongaars

  • dbLangIcelandic IJslands

  • dbLangNordic Scandinavische talen (alleen versie 1.0 van microsoft Jet-database-engine)

  • dbLangNorwdan Noors en Deens

  • dbLangPolish Pools

  • dbLangSpanish Traditioneel Spaans

  • dbLangSwedfin Zweeds en Fins

  • dbLangTurkish Turks

dwOptions
Een geheel getal dat een of meer opties aangeeft. Mogelijke waarden zijn:

  • dbEncrypt Maak een versleutelde database.

  • dbVersion10 Maak een database met Microsoft Jet-database versie 1.0.

  • dbVersion11 Maak een database met Microsoft Jet-database versie 1.1.

  • dbVersion20 Maak een database met Microsoft Jet-database versie 2.0.

  • dbVersion30 Maak een database met Microsoft Jet-database versie 3.0.

Als u de versleutelingsconstante weglaat, wordt er een niet-versleutelde database gemaakt. U kunt slechts één versieconstante opgeven. Als u een versieconstante weglaat, wordt er een database gemaakt die gebruikmaakt van de Microsoft Jet-database versie 3.0.

Waarschuwing

Als een database niet is versleuteld, is het mogelijk, zelfs als u beveiliging van gebruikers/wachtwoorden implementeert, om het binaire schijfbestand dat de database vormt, rechtstreeks te lezen.

Opmerkingen

Create maakt het databasebestand en het onderliggende DAO-databaseobject en initialiseert het C++-object. Het object wordt toegevoegd aan de verzameling Databases van de gekoppelde werkruimte. Het databaseobject heeft een open status; bel niet Open* na Create.

Opmerking

Met Create, kunt u alleen Microsoft Jet (. MDB) databases. U kunt geen ISAM-databases of ODBC-databases maken.

CDaoDatabase::CreateRelation

Roep deze lidfunctie aan om een relatie tot stand te brengen tussen een of meer velden in een primaire tabel in de database en een of meer velden in een refererende tabel (een andere tabel in de database).

void CreateRelation(
    LPCTSTR lpszName,
    LPCTSTR lpszTable,
    LPCTSTR lpszForeignTable,
    long lAttributes,
    LPCTSTR lpszField,
    LPCTSTR lpszForeignField);

void CreateRelation(CDaoRelationInfo& relinfo);

Parameterwaarden

lpszName
De unieke naam van het relationele object. De naam moet beginnen met een letter en mag maximaal 40 tekens bevatten. Het kan getallen en onderstrepingstekens bevatten, maar kan geen interpunctie of spaties bevatten.

lpszTable
De naam van de primaire tabel in de relatie. Als de tabel niet bestaat, genereert MFC een uitzondering van het type CDaoException.

lpszForeignTable
De naam van de refererende tabel in de relatie. Als de tabel niet bestaat, genereert MFC een uitzondering van het type CDaoException.

lAttributes
Een lange waarde die informatie over het relatietype bevat. U kunt deze waarde onder andere gebruiken om referentiële integriteit af te dwingen. U kunt de bitwise-OR-operator () gebruiken om een van de volgende waarden te combineren (|zolang de combinatie zinvol is):

  • dbRelationUnique Relatie is een-op-een.

  • dbRelationDontEnforce Relatie wordt niet afgedwongen (geen referentiële integriteit).

  • dbRelationInherited De relatie bestaat in een niet-huidige database die de twee gekoppelde tabellen bevat.

  • dbRelationUpdateCascade Updates worden trapsgewijs weergegeven (zie Opmerkingen voor meer informatie over trapsgewijs).

  • dbRelationDeleteCascade Verwijderingen worden trapsgewijs verwijderd.

lpszField
Een aanwijzer naar een door null beëindigde tekenreeks die de naam van een veld in de primaire tabel bevat (met de naam lpszTable).

lpszForeignField
Een aanwijzer naar een door null beëindigde tekenreeks met de naam van een veld in de refererende tabel (met de naam lpszForeignTable).

relinfo
Een verwijzing naar een CDaoRelationInfo-object dat informatie bevat over de relatie die u wilt maken.

Opmerkingen

De relatie kan niet betrekking hebben op een query of een gekoppelde tabel uit een externe database.

Gebruik de eerste versie van de functie wanneer de relatie één veld in elk van de twee tabellen omvat. Gebruik de tweede versie wanneer de relatie meerdere velden omvat. Het maximum aantal velden in een relatie is 14.

Met deze actie wordt een onderliggend DAO-relationeel object gemaakt, maar dit is een MFC-implementatiedetails, omdat de inkapseling van relationele objecten van MFC zich in klasse CDaoDatabasebevindt. MFC levert geen klasse voor relaties.

Als u de kenmerken van het relationele object instelt om trapsgewijs bewerkingen te activeren, wordt de database-engine records in een of meer andere tabellen automatisch bijgewerkt of verwijderd wanneer wijzigingen worden aangebracht in gerelateerde primaire-sleuteltabellen.

Stel dat u een trapsgewijze verwijderingsrelatie tot stand brengt tussen een tabel Klanten en een tabel Orders. Wanneer u records uit de tabel Klanten verwijdert, worden records in de tabel Orders die aan die klant zijn gerelateerd, ook verwijderd. Als u bovendien trapsgewijs relaties tot stand brengt tussen de tabel Orders en andere tabellen, worden records uit deze tabellen automatisch verwijderd wanneer u records uit de tabel Klanten verwijdert.

Zie het onderwerp CreateRelation Method in DAO Help voor verwante informatie.

CDaoDatabase::D eleteQueryDef

Roep deze lidfunctie aan om de opgegeven querydef (opgeslagen query) te verwijderen uit de verzameling QueryDefs van het CDaoDatabase object.

void DeleteQueryDef(LPCTSTR lpszName);

Parameterwaarden

lpszName
De naam van de opgeslagen query die u wilt verwijderen.

Opmerkingen

Daarna wordt die query niet meer gedefinieerd in de database.

Zie klasse CDaoQueryDef voor informatie over het maken van querydef-objecten. Een querydef-object wordt gekoppeld aan een bepaald CDaoDatabase object wanneer u het CDaoQueryDef object maakt, waarbij deze een aanwijzer doorgeeft aan het databaseobject.

CDaoDatabase::D eleteRelation

Roep deze lidfunctie aan om een bestaande relatie te verwijderen uit de verzameling Relaties van het databaseobject.

void DeleteRelation(LPCTSTR lpszName);

Parameterwaarden

lpszName
De naam van de relatie die moet worden verwijderd.

Opmerkingen

Daarna bestaat de relatie niet meer.

Zie het onderwerp 'Methode verwijderen' in DAO Help voor verwante informatie.

CDaoDatabase::D eleteTableDef

Roep deze lidfunctie aan om de opgegeven tabel en alle bijbehorende gegevens te verwijderen uit de verzameling TableDefs van het CDaoDatabase object.

void DeleteTableDef(LPCTSTR lpszName);

Parameterwaarden

lpszName
De naam van de ingediendeef die moet worden verwijderd.

Opmerkingen

Daarna wordt deze tabel niet meer gedefinieerd in de database.

Opmerking

Wees voorzichtig met het niet verwijderen van systeemtabellen.

Zie klasse CDaoTableDef voor informatie over het maken van ingediende objecten. Een ingediendef-object wordt gekoppeld aan een bepaald CDaoDatabase object wanneer u het CDaoTableDef object maakt, waarbij deze een aanwijzer doorgeeft aan het databaseobject.

Zie het onderwerp 'Methode verwijderen' in DAO Help voor verwante informatie.

CDaoDatabase::Execute

Roep deze lidfunctie aan om een actiequery uit te voeren of een SQL-instructie uit te voeren op de database.

void Execute(
    LPCTSTR lpszSQL,
    int nOptions = dbFailOnError);

Parameterwaarden

lpszSQL
Aanwijzer naar een door null beëindigde tekenreeks met een geldige SQL-opdracht die moet worden uitgevoerd.

nOptions
Een geheel getal dat opties opgeeft met betrekking tot de integriteit van de query. U kunt de bitwise-OR-operator (|) gebruiken om een van de volgende constanten te combineren, mits de combinatie zinvol is. U zou bijvoorbeeld niet combineren dbInconsistent met dbConsistent:

  • dbDenyWrite Schrijfmachtigingen weigeren voor andere gebruikers.

  • dbInconsistent (Standaard) Inconsistente updates.

  • dbConsistent Consistente updates.

  • dbSQLPassThrough SQL-passthrough. Zorgt ervoor dat de SQL-instructie wordt doorgegeven aan een ODBC-gegevensbron voor verwerking.

  • dbFailOnError Schakel updates terug als er een fout optreedt.

  • dbSeeChanges Genereer een runtimefout als een andere gebruiker gegevens wijzigt die u bewerkt.

Opmerking

Als beide dbInconsistent en dbConsistent zijn opgenomen of als geen van beide is opgenomen, is het resultaat de standaardwaarde. Zie het onderwerp 'Methode uitvoeren' in DAO Help voor een uitleg van deze constanten.

Opmerkingen

Execute werkt alleen voor actiequery's of SQL Pass Through-query's die geen resultaten retourneren. Het werkt niet voor selectiequery's, die records retourneren.

Zie de onderwerpen 'Actiequery' en 'Methode uitvoeren' in DAO Help voor een definitie en informatie over actiequery's.

Aanbeveling

Gezien een syntactisch juiste SQL-instructie en de juiste machtigingen mislukt de Execute lidfunctie niet, zelfs niet als er niet één rij kan worden gewijzigd of verwijderd. Gebruik daarom altijd de dbFailOnError optie wanneer u de Execute lidfunctie gebruikt om een bijwerk- of verwijderquery uit te voeren. Deze optie zorgt ervoor dat MFC een uitzondering genereert van het type CDaoException en alle geslaagde wijzigingen terugdraait als een van de betrokken records is vergrendeld en niet kan worden bijgewerkt of verwijderd. Houd er rekening mee dat u altijd kunt aanroepen GetRecordsAffected om te zien hoeveel records zijn beïnvloed.

Roep de functie GetRecordsAffected member van het databaseobject aan om het aantal records te bepalen dat wordt beïnvloed door de meest recente Execute aanroep. Retourneert bijvoorbeeld GetRecordsAffected informatie over het aantal records dat is verwijderd, bijgewerkt of ingevoegd bij het uitvoeren van een actiequery. Het geretourneerde aantal weerspiegelt geen wijzigingen in gerelateerde tabellen wanneer trapsgewijs bijwerken of verwijderen van kracht zijn.

Execute retourneert geen recordset. Als Execute u een query gebruikt die records selecteert, wordt MFC een uitzondering van het type CDaoExceptiongegenereerd. (Er is geen ExecuteSQL lidfunctie vergelijkbaar met CDatabase::ExecuteSQL.)

CDaoDatabase::GetConnect

Roep deze lidfunctie aan om de verbindingsreeks op te halen die wordt gebruikt om het CDaoDatabase object te verbinden met een ODBC- of ISAM-database.

CString GetConnect();

Retourwaarde

De verbindingsreeks als Openen is aangeroepen op een ODBC-gegevensbron; anders, een lege tekenreeks. Voor een Microsoft Jet (. MDB)-database, de tekenreeks is altijd leeg, tenzij u deze instelt voor gebruik met de dbSQLPassThrough optie die wordt gebruikt met de functie Lid uitvoeren of wordt gebruikt bij het openen van een recordset.

Opmerkingen

De tekenreeks bevat informatie over de bron van een geopende database of een database die wordt gebruikt in een passthrough-query. De verbindingsreeks bestaat uit een databasetypeaanduiding en nul of meer parameters gescheiden door puntkomma's.

Opmerking

Het gebruik van de MFC DAO-klassen om via ODBC verbinding te maken met een gegevensbron is minder efficiënt dan verbinding maken via een gekoppelde tabel.

Opmerking

De verbindingsreeks wordt gebruikt om zo nodig aanvullende informatie door te geven aan ODBC en bepaalde ISAM-stuurprogramma's. Het wordt niet gebruikt voor . MDB-databases. Voor microsoft Jet-databasebasistabellen is de verbindingsreeks een lege tekenreeks ("") behalve wanneer u deze gebruikt voor een SQL-passthrough-query, zoals hierboven wordt beschreven onder Retourwaarde.

Zie de functie Lid openen voor een beschrijving van hoe de verbindingsreeks wordt gemaakt. Zodra de verbindingsreeks is ingesteld in de Open aanroep, kunt u deze later gebruiken om de instelling te controleren om het type, pad, gebruikers-id, wachtwoord of ODBC-gegevensbron van de database te bepalen.

CDaoDatabase::GetName

Roep deze lidfunctie aan om de naam van de momenteel geopende database op te halen. Dit is de naam van een bestaand databasebestand of de naam van een geregistreerde ODBC-gegevensbron.

CString GetName();

Retourwaarde

Het volledige pad en de bestandsnaam van de database, indien geslaagd; anders, een lege CString.

Opmerkingen

Als uw netwerk ondersteuning biedt voor de UNIFORM Naming Convention (UNC), kunt u ook een netwerkpad opgeven, bijvoorbeeld \\\MYSERVER\\MYSHARE\\MYDIR\\MYDB. MDB'. (Dubbele backslashes zijn vereist in letterlijke tekenreeksen omdat '\' het escapeteken C++ is.)

U wilt deze naam bijvoorbeeld weergeven in een kop. Als er een fout optreedt terwijl de naam wordt opgehaald, genereert MFC een uitzondering van het type CDaoException.

Opmerking

Voor betere prestaties wanneer externe databases worden geopend, raden we u aan externe databasetabellen toe te voegen aan een Microsoft Jet-database (. MDB) in plaats van rechtstreeks verbinding te maken met de gegevensbron.

Het databasetype wordt aangegeven door het bestand of de map waarnaar het pad verwijst, als volgt:

Padnaam verwijst naar.. Database-type
. MDB-bestand Microsoft Jet-database (Microsoft Access)
Map met . DBF-bestand(en) dBASE-database
Map met .XLS-bestand Microsoft Excel-database
Map met . PDX-bestand(en) Paradox-database
Map die de juiste opgemaakte tekstbestanden bevat Database met tekstindeling

Voor ODBC-databases zoals SQL Server en Oracle identificeert de verbindingsreeks van de database een gegevensbronnaam (DSN) die is geregistreerd door ODBC.

CDaoDatabase::GetQueryDefCount

Roep deze lidfunctie aan om het aantal query's op te halen dat is gedefinieerd in de querydefs-verzameling van de database.

short GetQueryDefCount();

Retourwaarde

Het aantal query's dat is gedefinieerd in de database.

Opmerkingen

GetQueryDefCount is handig als u alle querydefs in de verzameling QueryDefs moet doorlopen. Zie GetQueryDefInfo voor informatie over een bepaalde query in de verzameling.

CDaoDatabase::GetQueryDefInfo

Roep deze lidfunctie aan om verschillende soorten informatie te verkrijgen over een query die is gedefinieerd in de database.

void GetQueryDefInfo(
    int nIndex,
    CDaoQueryDefInfo& querydefinfo,
    DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);

void GetQueryDefInfo(
    LPCTSTR lpszName,
    CDaoQueryDefInfo& querydefinfo,
    DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);

Parameterwaarden

nIndex
De index van de vooraf gedefinieerde query in de querydefs-verzameling van de database, voor zoekactie op index.

querydefinfo
Een verwijzing naar een CDaoQueryDefInfo-object dat de gevraagde informatie retourneert.

dwInfoOptions
Opties die aangeven welke informatie over de recordset moet worden opgehaald. De beschikbare opties worden hier vermeld, samen met wat ervoor zorgt dat de functie retourneert over de recordset:

  • AFX_DAO_PRIMARY_INFO (standaardnaam), typt u

  • AFX_DAO_SECONDARY_INFO primaire informatie plus: Datum gemaakt, Datum van laatste update, records retourneert, kan worden bijgewerkt

  • AFX_DAO_ALL_INFO primaire en secundaire informatie plus: SQL, Connect, ODBCTimeout

lpszName
Een tekenreeks met de naam van een query die is gedefinieerd in de database, voor zoekactie op naam.

Opmerkingen

Er worden twee versies van de functie opgegeven, zodat u een query kunt selecteren op index in de verzameling QueryDefs van de database of op de naam van de query.

Zie de structuur CDaoQueryDefInfo voor een beschrijving van de informatie die wordt geretourneerd in querydefinfo. Deze structuur bevat leden die overeenkomen met de gegevens die hierboven worden vermeld in de beschrijving van dwInfoOptions. Als u één informatieniveau aanvraagt, krijgt u ook eventuele eerdere informatieniveaus.

CDaoDatabase::GetQueryTimeout

Roep deze lidfunctie aan om het huidige aantal seconden op te halen dat is toegestaan voordat er een time-out optreedt voor volgende bewerkingen in de verbonden database.

short GetQueryTimeout();

Retourwaarde

Een kort geheel getal met de time-outwaarde in seconden.

Opmerkingen

Een bewerking kan een time-out veroorzaken vanwege problemen met netwerktoegang, overmatige verwerkingstijd voor query's, enzovoort. Hoewel de instelling van kracht is, is dit van invloed op alle geopende bewerkingen, nieuwe bewerkingen toevoegen, bijwerken en verwijderen op recordsets die aan dit CDaoDatabase object zijn gekoppeld. U kunt de huidige time-outinstelling wijzigen door SetQueryTimeout aan te roepen. Als u de time-outwaarde van de query voor een recordset wijzigt nadat deze is geopend, wordt de waarde voor de recordset niet gewijzigd. Bij volgende verplaatsingsbewerkingen wordt bijvoorbeeld de nieuwe waarde niet gebruikt. De standaardwaarde wordt in eerste instantie ingesteld wanneer de database-engine wordt geïnitialiseerd.

De standaardwaarde voor querytime-outs wordt opgehaald uit het Windows-register. Als er geen registerinstelling is, is de standaardwaarde 60 seconden. Niet alle databases ondersteunen de mogelijkheid om een time-outwaarde voor query's in te stellen. Als u een time-outwaarde voor query's van 0 instelt, treedt er geen time-out op; en communicatie met de database reageert mogelijk niet meer. Dit gedrag kan nuttig zijn tijdens de ontwikkeling. Als de aanroep mislukt, genereert MFC een uitzondering van het type CDaoException.

Zie het onderwerp QueryTimeout Property in DAO Help voor verwante informatie.

CDaoDatabase::GetRecordsAffected

Roep deze lidfunctie aan om het aantal records te bepalen dat wordt beïnvloed door de meest recente aanroep van de functie Execute member.

long GetRecordsAffected();

Retourwaarde

Een lang geheel getal met het aantal betrokken records.

Opmerkingen

De geretourneerde waarde bevat het aantal records dat is verwijderd, bijgewerkt of ingevoegd door een actiequery die wordt uitgevoerd met Execute. Het geretourneerde aantal weerspiegelt geen wijzigingen in gerelateerde tabellen wanneer trapsgewijs bijwerken of verwijderen van kracht zijn.

Zie het onderwerp 'RecordsAffected Property' in DAO Help voor verwante informatie.

CDaoDatabase::GetRelationCount

Roep deze lidfunctie aan om het aantal relaties te verkrijgen dat is gedefinieerd tussen tabellen in de database.

short GetRelationCount();

Retourwaarde

Het aantal relaties dat is gedefinieerd tussen tabellen in de database.

Opmerkingen

GetRelationCount is handig als u alle gedefinieerde relaties in de verzameling Relaties van de database moet doorlopen. Zie GetRelationInfo voor informatie over een bepaalde relatie in de verzameling.

Als u het concept van een relatie wilt illustreren, moet u een tabel Leveranciers en een tabel Producten overwegen, die mogelijk een een-op-veel-relatie hebben. In deze relatie kan één leverancier meer dan één product leveren. Andere relaties zijn een-op-een en veel-op-veel.

CDaoDatabase::GetRelationInfo

Roep deze lidfunctie aan om informatie te verkrijgen over een opgegeven relatie in de verzameling Relaties van de database.

void GetRelationInfo(
    int nIndex,
    CDaoRelationInfo& relinfo,
    DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);

void GetRelationInfo(
    LPCTSTR lpszName,
    CDaoRelationInfo& relinfo,
    DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);

Parameterwaarden

nIndex
De index van het relationele object in de verzameling Relaties van de database, voor zoekactie op index.

relinfo
Een verwijzing naar een CDaoRelationInfo-object dat de gevraagde informatie retourneert.

dwInfoOptions
Opties die aangeven welke informatie over de relatie moet worden opgehaald. De beschikbare opties worden hier vermeld, samen met wat ze ertoe leiden dat de functie retourneert over de relatie:

  • AFX_DAO_PRIMARY_INFO (standaard) naam, tabel, refererende tabel

  • AFX_DAO_SECONDARY_INFO kenmerken, veldgegevens

De veldinformatie is een CDaoRelationFieldInfo-object met de velden uit de primaire tabel die betrokken is bij de relatie.

lpszName
Een tekenreeks met de naam van het relationele object, voor zoeken op naam.

Opmerkingen

Twee versies van deze functie bieden toegang per index of op naam. Zie de structuur CDaoRelationInfo voor een beschrijving van de informatie die wordt geretourneerd in relinfo. Deze structuur bevat leden die overeenkomen met de gegevens die hierboven worden vermeld in de beschrijving van dwInfoOptions. Als u informatie op één niveau aanvraagt, krijgt u ook informatie op eerdere niveaus.

Opmerking

Als u de kenmerken van het relationele object instelt om trapsgewijze bewerkingen (dbRelationUpdateCascades of dbRelationDeleteCascades) te activeren, wordt de Microsoft Jet-database-engine records in een of meer andere tabellen automatisch bijgewerkt of verwijderd wanneer wijzigingen worden aangebracht in gerelateerde primaire-sleuteltabellen. Stel dat u een trapsgewijze verwijderingsrelatie tot stand brengt tussen een tabel Klanten en een tabel Orders. Wanneer u records uit de tabel Klanten verwijdert, worden records in de tabel Orders die aan die klant zijn gerelateerd, ook verwijderd. Als u bovendien trapsgewijs relaties tot stand brengt tussen de tabel Orders en andere tabellen, worden records uit deze tabellen automatisch verwijderd wanneer u records uit de tabel Klanten verwijdert.

CDaoDatabase::GetTableDefCount

Roep deze lidfunctie aan om het aantal tabellen op te halen dat is gedefinieerd in de database.

short GetTableDefCount();

Retourwaarde

Het aantal ingediendeefs dat in de database is gedefinieerd.

Opmerkingen

GetTableDefCount is handig als u alle ingediendeefs in de TableDefs-verzameling van de database moet doorlopen. Zie GetTableDefInfo voor informatie over een bepaalde tabel in de verzameling.

CDaoDatabase::GetTableDefInfo

Roep deze lidfunctie aan om verschillende soorten informatie te verkrijgen over een tabel die is gedefinieerd in de database.

void GetTableDefInfo(
    int nIndex,
    CDaoTableDefInfo& tabledefinfo,
    DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);

void GetTableDefInfo(
    LPCTSTR lpszName,
    CDaoTableDefInfo& tabledefinfo,
    DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);

Parameterwaarden

nIndex
De index van het ingediendeef-object in de verzameling TableDefs van de database voor zoekactie op index.

tabledefinfo
Een verwijzing naar een CDaoTableDefInfo-object dat de gevraagde informatie retourneert.

dwInfoOptions
Opties waarmee wordt opgegeven welke informatie over de tabel moet worden opgehaald. De beschikbare opties worden hier vermeld, samen met wat ze ertoe leiden dat de functie retourneert over de relatie:

  • AFX_DAO_PRIMARY_INFO (standaard) naam, kan worden bijgewerkt, kenmerken

  • AFX_DAO_SECONDARY_INFO primaire informatie plus: Datum gemaakt, Datum laatst bijgewerkt, Naam brontabel, Verbinding maken

  • AFX_DAO_ALL_INFO primaire en secundaire informatie plus: Validatieregel, Validatietekst, Aantal records

lpszName
De naam van het object van de ingediendeef, voor zoekactie op naam.

Opmerkingen

Er worden twee versies van de functie opgegeven, zodat u een tabel kunt selecteren op index in de tabledefs-verzameling van de database of op de naam van de tabel.

Zie de structuur CDaoTableDefInfo voor een beschrijving van de informatie die is geretourneerd in de ingediende informatie. Deze structuur bevat leden die overeenkomen met de gegevens die hierboven worden vermeld in de beschrijving van dwInfoOptions. Als u informatie op één niveau aanvraagt, krijgt u ook informatie voor eventuele eerdere niveaus.

Opmerking

De optie AFX_DAO_ALL_INFO biedt informatie die traag kan zijn om te verkrijgen. In dit geval kan het tellen van de records in de tabel erg tijdrovend zijn als er veel records zijn.

CDaoDatabase::GetVersion

Roep deze lidfunctie aan om de versie van het Microsoft Jet-databasebestand te bepalen.

CString GetVersion();

Retourwaarde

Een CString die de versie aangeeft van het databasebestand dat aan het object is gekoppeld.

Opmerkingen

De geretourneerde waarde vertegenwoordigt het versienummer in de vorm 'major.minor'; Bijvoorbeeld '3.0'. Het versienummer van het product (bijvoorbeeld 3.0) bestaat uit het versienummer (3), een punt en het releasenummer (0). De versies tot heden zijn 1.0, 1.1, 2.0 en 3.0.

Zie het onderwerp 'Versie-eigenschap' in DAO Help voor verwante informatie.

CDaoDatabase::IsOpen

Roep deze lidfunctie aan om te bepalen of het CDaoDatabase object momenteel is geopend in een database.

BOOL IsOpen() const;

Retourwaarde

Niet-nul als het CDaoDatabase object momenteel is geopend; anders 0.

Opmerkingen

CDaoDatabase::m_pDAODatabase

Bevat een aanwijzer naar de OLE-interface voor het DAO-databaseobject onder het CDaoDatabase object.

Opmerkingen

Gebruik deze aanwijzer als u rechtstreeks toegang wilt krijgen tot de DAO-interface.

Zie Technical Note 54 voor informatie over het rechtstreeks aanroepen van DAO.

CDaoDatabase::m_pWorkspace

Bevat een aanwijzer naar het CDaoWorkspace-object dat het databaseobject bevat.

Opmerkingen

Gebruik deze aanwijzer als u rechtstreeks toegang wilt krijgen tot de werkruimte. Als u bijvoorbeeld verwijst naar andere databaseobjecten in de verzameling Databases van de werkruimte.

CDaoDatabase::Open

U moet deze lidfunctie aanroepen om een nieuw samengesteld CDaoDatabase object te initialiseren dat een bestaande database vertegenwoordigt.

virtual void Open(
    LPCTSTR lpszName,
    BOOL bExclusive = FALSE,
    BOOL bReadOnly = FALSE,
    LPCTSTR lpszConnect = _T(""));

Parameterwaarden

lpszName
Een tekenreeksexpressie die de naam is van een bestaande Microsoft Jet (. MDB) databasebestand. Als de bestandsnaam een extensie heeft, is dit vereist. Als uw netwerk ondersteuning biedt voor de uniform naming convention (UNC), kunt u ook een netwerkpad opgeven, zoals \\\\MYSERVER\\MYSHARE\\MYDIR\\MYDB. MDB'. (Dubbele backslashes zijn vereist in letterlijke tekenreeksen omdat '\' het escapeteken C++ is.)

Sommige overwegingen zijn van toepassing bij het gebruik van lpszName. Als dit het volgende is:

  • Verwijst naar een database die al is geopend voor exclusieve toegang door een andere gebruiker, MFC genereert een uitzondering van het type CDaoException. Trap deze uitzondering om uw gebruiker te laten weten dat de database niet beschikbaar is.

  • Is een lege tekenreeks ("") en lpszConnect is "ODBC;", een dialoogvenster met alle geregistreerde ODBC-gegevensbronnamen wordt weergegeven, zodat de gebruiker een database kan selecteren. Vermijd directe verbindingen met ODBC-gegevensbronnen; gebruik in plaats daarvan een gekoppelde tabel.

  • Anders verwijst niet naar een bestaande database of geldige ODBC-gegevensbronnaam, genereert MFC een uitzondering van het type CDaoException.

Opmerking

Zie de DAOERR voor meer informatie over DAO-foutcodes. H-bestand. Zie voor verwante informatie het onderwerp 'Fouten in gegevenstoegang met ingesloten gegevens' in DAO Help.

bExclusive
Een Booleaanse waarde die TRUE is als de database moet worden geopend voor exclusieve (niet-gedeelde) toegang en FALSE als de database moet worden geopend voor gedeelde toegang. Als u dit argument weglaat, wordt de database geopend voor gedeelde toegang.

bReadOnly
Een Booleaanse waarde die TRUE is als de database moet worden geopend voor alleen-lezentoegang en ONWAAR als de database moet worden geopend voor lees-/schrijftoegang. Als u dit argument weglaat, wordt de database geopend voor lees-/schrijftoegang. Alle afhankelijke recordsets nemen dit kenmerk over.

lpszConnect
Een tekenreeksexpressie die wordt gebruikt voor het openen van de database. Deze tekenreeks vormt de ODBC-verbindingsargumenten. U moet de exclusieve en alleen-lezen argumenten opgeven om een brontekenreeks op te geven. Als de database een Microsoft Jet-database is (. MDB), deze tekenreeks is leeg (""). De syntaxis voor de standaardwaarde, _T(""), biedt overdraagbaarheid voor Unicode en ANSI-builds van uw toepassing.

Opmerkingen

Open koppelt de database aan het onderliggende DAO-object. U kunt het databaseobject niet gebruiken om recordset-, tabledef- of querydef-objecten te maken totdat het is geïnitialiseerd. Open voegt het databaseobject toe aan de databaseverzameling van de gekoppelde werkruimte.

Gebruik de parameters als volgt:

  • Als u een Microsoft Jet opent (. MDB) database, gebruik de parameter lpszName en geef een lege tekenreeks door voor de parameter lpszConnect of geef een wachtwoordtekenreeks door van het formulier "; PWD=password" als de database met een wachtwoord is beveiligd (. Alleen MDB-databases).

  • Als u een ODBC-gegevensbron opent, geeft u een geldige ODBC-verbindingsreeks door in lpszConnect en een lege tekenreeks in lpszName.

Zie het onderwerp OpenDatabase Method in DAO Help voor verwante informatie.

Opmerking

Voor betere prestaties bij het openen van externe databases, waaronder ISAM-databases en ODBC-gegevensbronnen, is het raadzaam om externe databasetabellen toe te voegen aan een Microsoft Jet Engine-database (. MDB) in plaats van rechtstreeks verbinding te maken met de gegevensbron.

Het is mogelijk dat er een time-out optreedt voor een verbindingspoging als de DBMS-host bijvoorbeeld niet beschikbaar is. Als de verbindingspoging mislukt, Open genereert u een uitzondering van het type CDaoException.

De overige opmerkingen zijn alleen van toepassing op ODBC-databases:

Als de database een ODBC-database is en de parameters in uw Open aanroep niet voldoende informatie bevatten om de verbinding te maken, opent het ODBC-stuurprogramma een dialoogvenster om de benodigde informatie van de gebruiker te verkrijgen. Wanneer u aanroept Open, wordt uw verbindingsreeks, lpszConnect, privé opgeslagen en is deze beschikbaar door de functie GetConnect-lid aan te roepen.

Als u wilt, kunt u uw eigen dialoogvenster openen voordat u belt Open om informatie van de gebruiker op te halen, zoals een wachtwoord, en die informatie vervolgens toevoegen aan de verbindingsreeks die u doorgeeft.Open Of misschien wilt u de verbindingsreeks opslaan die u doorgeeft (mogelijk in het Windows-register), zodat u deze de volgende keer dat uw toepassing een CDaoDatabase object aanroeptOpen, opnieuw kunt gebruiken.

U kunt ook de verbindingsreeks gebruiken voor meerdere aanmeldingsniveaus (elk voor een ander CDaoDatabase object) of om andere databasespecifieke informatie over te brengen.

CDaoDatabase::SetQueryTimeout

Roep deze lidfunctie aan om het standaardaantal seconden te overschrijven dat moet worden toegestaan voordat volgende bewerkingen op de verbonden database een time-out hebben.

void SetQueryTimeout(short nSeconds);

Parameterwaarden

nSeconden
Het aantal seconden dat moet worden toegestaan voordat er een time-out optreedt voor een querypoging.

Opmerkingen

Een bewerking kan een time-out veroorzaken vanwege problemen met netwerktoegang, overmatige verwerkingstijd voor query's, enzovoort. Roep SetQueryTimeout aan voordat u de recordset opent of voordat u de functies AddNew, Update of Delete van de recordset aanroept als u de time-outwaarde van de query wilt wijzigen. De instelling is van invloed op alle volgendeAddNewUpdateDelete recordsets die aan dit CDaoDatabase object zijn gekoppeld. Als u de time-outwaarde van de query voor een recordset wijzigt nadat deze is geopend, wordt de waarde voor de recordset niet gewijzigd. Bij volgende verplaatsingsbewerkingen wordt bijvoorbeeld de nieuwe waarde niet gebruikt.

De standaardwaarde voor querytime-outs is 60 seconden. Niet alle databases ondersteunen de mogelijkheid om een time-outwaarde voor query's in te stellen. Als u een time-outwaarde voor query's van 0 instelt, treedt er geen time-out op; de communicatie met de database niet meer reageert. Dit gedrag kan nuttig zijn tijdens de ontwikkeling.

Zie het onderwerp QueryTimeout Property in DAO Help voor verwante informatie.

Zie ook

CObject-klasse
Hiërarchiegrafiek
CDaoWorkspace-klasse
CDaoRecordset-klasse
CDaoTableDef-klasse
CDaoQueryDef-klasse
CDatabase-klasse
Klasse CDaoException