Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of mappen te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen om mappen te wijzigen.
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
CDaoDatabaseobject, waarbij een aanwijzer wordt doorgegeven aan een geopend CDaoWorkspace-object .Of maak een
CDaoDatabaseobject 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
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:
dbLangGeneralEngels, Duits, Frans, Portugees, Italiaans en Modern SpaansdbLangArabicArabischdbLangCyrillicRussischdbLangCzechTsjechischdbLangDutchNederlandsdbLangGreekGrieksdbLangHebrewHebreeuwsdbLangHungarianHongaarsdbLangIcelandicIJslandsdbLangNordicScandinavische talen (alleen versie 1.0 van microsoft Jet-database-engine)dbLangNorwdanNoors en DeensdbLangPolishPoolsdbLangSpanishTraditioneel SpaansdbLangSwedfinZweeds en FinsdbLangTurkishTurks
dwOptions
Een geheel getal dat een of meer opties aangeeft. Mogelijke waarden zijn:
dbEncryptMaak een versleutelde database.dbVersion10Maak een database met Microsoft Jet-database versie 1.0.dbVersion11Maak een database met Microsoft Jet-database versie 1.1.dbVersion20Maak een database met Microsoft Jet-database versie 2.0.dbVersion30Maak 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):
dbRelationUniqueRelatie is een-op-een.dbRelationDontEnforceRelatie wordt niet afgedwongen (geen referentiële integriteit).dbRelationInheritedDe relatie bestaat in een niet-huidige database die de twee gekoppelde tabellen bevat.dbRelationUpdateCascadeUpdates worden trapsgewijs weergegeven (zie Opmerkingen voor meer informatie over trapsgewijs).dbRelationDeleteCascadeVerwijderingen 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:
dbDenyWriteSchrijfmachtigingen weigeren voor andere gebruikers.dbInconsistent(Standaard) Inconsistente updates.dbConsistentConsistente updates.dbSQLPassThroughSQL-passthrough. Zorgt ervoor dat de SQL-instructie wordt doorgegeven aan een ODBC-gegevensbron voor verwerking.dbFailOnErrorSchakel updates terug als er een fout optreedt.dbSeeChangesGenereer 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