CDaoDatabase – třída
Představuje připojení k accessové databázi pomocí objektů DAO (Data Access Objects).
Poznámka:
Objekt pro přístup k datům (DAO) se podporuje prostřednictvím Office 2013. DAO 3.6 je konečná verze a je zastaralá.
Syntaxe
class CDaoDatabase : public CObject
Členové
Veřejné konstruktory
Název | Popis |
---|---|
CDaoDatabase::CDaoDatabase | CDaoDatabase Vytvoří objekt. Volání Open pro připojení objektu k databázi |
Veřejné metody
Název | Popis |
---|---|
CDaoDatabase::CanTransact | Vrátí nenulové hodnoty, pokud databáze podporuje transakce. |
CDaoDatabase::CanUpdate | Vrátí nenulovou hodnotu, pokud CDaoDatabase je objekt aktualizovatelný (nikoli jen pro čtení). |
CDaoDatabase::Close | Zavře připojení k databázi. |
CDaoDatabase::Create | Vytvoří základní databázový objekt DAO a inicializuje CDaoDatabase objekt. |
CDaoDatabase::CreateRelation | Definuje novou relaci mezi tabulkami v databázi. |
CDaoDatabase::D eleteQueryDef | Odstraní objekt querydef uložený v kolekci QueryDefs databáze. |
CDaoDatabase::D eleteRelation | Odstraní existující relaci mezi tabulkami v databázi. |
CDaoDatabase::D eleteTableDef | Odstraní definici tabulky v databázi. Tím se odstraní skutečná tabulka a všechna její data. |
CDaoDatabase::Execute | Spustí akční dotaz. Volání Execute dotazu, který vrací výsledky, vyvolá výjimku. |
CDaoDatabase::GetConnect | Vrátí připojovací řetězec sloužící k připojení objektu CDaoDatabase k databázi. Používá se pro rozhraní ODBC. |
CDaoDatabase::GetName | Vrátí název aktuálně používané databáze. |
CDaoDatabase::GetQueryDefCount | Vrátí počet dotazů definovaných pro databázi. |
CDaoDatabase::GetQueryDefInfo | Vrátí informace o zadaném dotazu definovaném v databázi. |
CDaoDatabase::GetQueryTimeout | Vrátí počet sekund po vypršení časového limitu databázových operací dotazu. Ovlivňuje všechny následné operace otevření, přidání nových, aktualizací a úprav a dalších operací u zdrojů dat ODBC (pouze) jako Execute jsou volání. |
CDaoDatabase::GetRecordsAffected | Vrátí počet záznamů ovlivněných poslední aktualizací, úpravou nebo přidáním operace nebo voláním Execute . |
CDaoDatabase::GetRelationCount | Vrátí počet relací definovaných mezi tabulkami v databázi. |
CDaoDatabase::GetRelationInfo | Vrátí informace o zadané relaci definované mezi tabulkami v databázi. |
CDaoDatabase::GetTableDefCount | Vrátí počet tabulek definovaných v databázi. |
CDaoDatabase::GetTableDefInfo | Vrátí informace o zadané tabulce v databázi. |
CDaoDatabase::GetVersion | Vrátí verzi databázového stroje přidruženého k databázi. |
CDaoDatabase::IsOpen | Vrátí nenulovou hodnotu, pokud CDaoDatabase je objekt aktuálně připojený k databázi. |
CDaoDatabase::Open | Vytvoří připojení k databázi. |
CDaoDatabase::SetQueryTimeout | Nastaví počet sekund, po kterých vyprší časový limit databázových dotazů (pouze u zdrojů dat ODBC). Ovlivňuje všechny následné operace otevření, přidání nových, aktualizací a odstranění. |
Veřejné datové členy
Název | Popis |
---|---|
CDaoDatabase::m_pDAODatabase | Ukazatel na základní databázový objekt DAO. |
CDaoDatabase::m_pWorkspace | Ukazatel na objekt CDaoWorkspace , který obsahuje databázi a definuje jeho transakční prostor. |
Poznámky
Informace o podporovaných formátech databáze najdete v článku o členské funkci GetName . V daném pracovním prostoru můžete mít v daném pracovním prostoru aktivní jeden nebo více CDaoDatabase
objektů, které jsou reprezentované objektem CDaoWorkspace . Pracovní prostor udržuje kolekci otevřených databázových objektů označovaných jako kolekce Databases.
Využití
Databázové objekty můžete vytvářet implicitně při vytváření objektů sady záznamů. Můžete ale také explicitně vytvářet databázové objekty. Pokud chcete existující databázi použít explicitně s CDaoDatabase
, proveďte jednu z následujících akcí:
CDaoDatabase
Vytvořte objekt a předáte ukazatel na otevřený objekt CDaoWorkspace.Nebo vytvořte
CDaoDatabase
objekt bez zadání pracovního prostoru (MFC vytvoří dočasný objekt pracovního prostoru).
Vytvoření nového Microsoft Jetu (. Databáze MDB), sestavení objektu CDaoDatabase
a volání jeho Create členské funkce. Nezavolejte Open
po Create
.
Chcete-li otevřít existující databázi, vytvořte CDaoDatabase
objekt a zavolejte jeho členovou funkci Open .
Každá z těchto technik připojí objekt databáze DAO ke kolekci databází pracovního prostoru a otevře připojení k datům. Když pak vytvoříte objekty CDaoRecordset, CDaoTableDef nebo CDaoQueryDef pro provoz v připojené databázi, předejte konstruktory pro tyto objekty ukazatel na objekt CDaoDatabase
. Po dokončení použití připojení zavolejte funkci Zavřít člena a zničit CDaoDatabase
objekt. Close
zavře všechny sady záznamů, které jste ještě nezavřeli.
Transakce
Zpracování databázových transakcí se dodává na úrovni pracovního prostoru – viz členské funkce CDaoWorkspace
BeginTrans, CommitTrans a Rollback třídy .
Připojení ODBC
Doporučeným způsobem práce se zdroji dat ODBC (Open Database Base Connectivity) je připojení externích tabulek k databázi Microsoft Jet (.MDB
).
Kolekce
Každá databáze udržuje své vlastní kolekce tabulek, querydef, recordset a relačních objektů. Třída CDaoDatabase
poskytuje členské funkce pro manipulaci s těmito objekty.
Poznámka:
Objekty jsou uloženy v rozhraní DAO, nikoli v databázovém objektu MFC. MFC poskytuje třídy pro objekty tabledef, querydef a recordset, ale ne pro relační objekty.
Hierarchie dědičnosti
CDaoDatabase
Požadavky
Hlavička: afxdao.h
CDaoDatabase::CanTransact
Voláním této členské funkce určíte, zda databáze umožňuje transakce.
BOOL CanTransact();
Návratová hodnota
Nenulové, pokud databáze podporuje transakce; jinak 0.
Poznámky
Transakce se spravují v pracovním prostoru databáze.
CDaoDatabase::CanUpdate
Voláním této členské funkce určíte, zda CDaoDatabase
objekt umožňuje aktualizace.
BOOL CanUpdate();
Návratová hodnota
Nenulové, pokud CDaoDatabase
objekt umožňuje aktualizace; jinak 0, což znamená, že jste při otevření objektu CDaoDatabase
předali hodnotu TRUE v bReadOnly nebo že samotná databáze je jen pro čtení. Viz členová funkce Open.
Poznámky
Informace o aktualizovatelnosti databáze naleznete v tématu Aktualizovatelná vlastnost v nápovědě k daO.
CDaoDatabase::CDaoDatabase
CDaoDatabase
Vytvoří objekt.
CDaoDatabase(CDaoWorkspace* pWorkspace = NULL);
Parametry
pWorkspace
Ukazatel na CDaoWorkspace
objekt, který bude obsahovat nový databázový objekt. Pokud přijmete výchozí hodnotu NULL, konstruktor vytvoří dočasný CDaoWorkspace
objekt, který používá výchozí pracovní prostor DAO. Ukazatel na objekt pracovního prostoru můžete získat prostřednictvím m_pWorkspace datového člena .
Poznámky
Po vytvoření objektu, pokud vytváříte nový Microsoft Jet (. Databáze MDB) volejte funkci Create člena objektu. Pokud jste místo toho otevření existující databáze, zavolejte funkci open člena objektu.
Po dokončení s objektem byste měli volat jeho funkci Zavřít člena a pak zničit CDaoDatabase
objekt.
Pro vložení objektu CDaoDatabase
do třídy dokumentu může být vhodné.
Poznámka:
Objekt CDaoDatabase
je také vytvořen implicitně, pokud otevřete CDaoRecordset objekt bez předání ukazatele na existující CDaoDatabase
objekt. Tento databázový objekt se zavře při zavření objektu sady záznamů.
CDaoDatabase::Close
Voláním této členské funkce se odpojíte od databáze a zavřete všechny otevřené sady záznamů, objekty tabledefs a querydefs přidružené k databázi.
virtual void Close();
Poznámky
Před voláním této členské funkce je vhodné tyto objekty zavřít sami. Zavření objektu CDaoDatabase
odebere z kolekce Databases v přidruženém pracovním prostoru. Protože Close
objekt nezničíte CDaoDatabase
, můžete objekt znovu použít tak, že otevřete stejnou databázi nebo jinou databázi.
Upozornění
Před zavření databáze volejte členovou funkci Update (pokud existují čekající úpravy) a Close
členské funkce u všech otevřených objektů sady záznamů. Pokud ukončíte funkci, která deklaruje CDaoRecordset nebo CDaoDatabase
objekty v zásobníku, databáze se zavře, všechny neuložené změny se ztratí, všechny čekající transakce se vrátí zpět a všechny čekající úpravy dat budou ztraceny.
Upozornění
Pokud se pokusíte zavřít databázový objekt, zatímco jsou otevřené všechny objekty sady záznamů, nebo pokud se pokusíte zavřít objekt pracovního prostoru, zatímco všechny databázové objekty patřící do tohoto konkrétního pracovního prostoru jsou otevřené, tyto objekty sady záznamů budou zavřeny a všechny čekající aktualizace nebo úpravy budou vráceny zpět. Pokud se pokusíte zavřít objekt pracovního prostoru, zatímco jsou otevřené všechny databázové objekty, které do něj patří, operace zavře všechny databázové objekty patřící k danému objektu pracovního prostoru, což může vést k zavření nezařazených objektů sady záznamů. Pokud databázový objekt nezavřete, prostředí MFC hlásí chybu kontrolního výrazu v sestaveních ladění.
Pokud je databázový objekt definován mimo rozsah funkce a ukončíte funkci bez jeho zavření, databázový objekt zůstane otevřený, dokud explicitně nezavřete nebo modul, ve kterém je definován, mimo rozsah.
CDaoDatabase::Create
Vytvoření nového Microsoft Jetu (. Databáze MDB) volejte tuto členovou funkci po vytvoření objektu CDaoDatabase
.
virtual void Create(
LPCTSTR lpszName,
LPCTSTR lpszLocale = dbLangGeneral,
int dwOptions = 0);
Parametry
lpszName
Řetězcový výraz, který je názvem databázového souboru, který vytváříte. Může to být úplná cesta a název souboru, například C:\\MYDB. MDB". Musíte zadat název. Pokud nezadáte příponu názvu souboru, . MdB se připojí. Pokud vaše síť podporuje jednotné zásady vytváření názvů (UNC), můžete také zadat síťovou cestu, například \\\\MYSERVER\\MYSHARE\\MYDIR\\MYDB. Pouze Microsoft Jet (. Soubory databáze MDB) lze vytvořit pomocí této členské funkce. (Dvojité zpětné lomítka jsou vyžadována v řetězcových literálech, protože "\" je řídicí znak jazyka C++.)
lpszLocale
Řetězcový výraz, který slouží k určení pořadí kolace pro vytvoření databáze. Výchozí hodnota je dbLangGeneral
. Možné hodnoty jsou:
dbLangGeneral
Angličtina, němčina, francouzština, portugalština, italština a moderní španělštinadbLangArabic
ArabštinadbLangCyrillic
RuštinadbLangCzech
ČeštinadbLangDutch
HolandštinadbLangGreek
ŘečtinadbLangHebrew
HebrejštinadbLangHungarian
MaďarštinadbLangIcelandic
IslandštinadbLangNordic
Severské jazyky (pouze databázový stroj Microsoft Jet verze 1.0)dbLangNorwdan
Norština a dánštinadbLangPolish
PolštinadbLangSpanish
Tradiční španělštinadbLangSwedfin
Švédština a finštinadbLangTurkish
Turečtina
dwOptions
Celé číslo, které označuje jednu nebo více možností. Možné hodnoty jsou:
dbEncrypt
Vytvořte šifrovanou databázi.dbVersion10
Vytvořte databázi s databází Microsoft Jet verze 1.0.dbVersion11
Vytvořte databázi s databází Microsoft Jet verze 1.1.dbVersion20
Vytvořte databázi s databází Microsoft Jet verze 2.0.dbVersion30
Vytvořte databázi s databází Microsoft Jet verze 3.0.
Pokud vynecháte šifrovací konstantu, vytvoří se nešifrovaná databáze. Můžete zadat pouze jednu konstantu verze. Pokud vynecháte konstantu verze, vytvoří se databáze, která používá databázi Microsoft Jet verze 3.0.
Upozornění
Pokud databáze není zašifrovaná, je možné, i když implementujete zabezpečení uživatele nebo hesla, aby se soubor binárního disku, který tvoří databázi, přímo přečetl.
Poznámky
Create
vytvoří databázový soubor a základní databázový objekt DAO a inicializuje objekt C++. Objekt se připojí k přidružené kolekci Databáze pracovního prostoru. Databázový objekt je v otevřeném stavu; nevolejte Open*
po Create
.
Poznámka:
S Create
, můžete vytvořit pouze Microsoft Jet (. Databáze MDB. Nelze vytvářet databáze ISAM ani databáze ODBC.
CDaoDatabase::CreateRelation
Voláním této členské funkce vytvoříte vztah mezi jedním nebo více poli v primární tabulce v databázi a jedním nebo více poli v cizí tabulce (jiná tabulka v databázi).
void CreateRelation(
LPCTSTR lpszName,
LPCTSTR lpszTable,
LPCTSTR lpszForeignTable,
long lAttributes,
LPCTSTR lpszField,
LPCTSTR lpszForeignField);
void CreateRelation(CDaoRelationInfo& relinfo);
Parametry
lpszName
Jedinečný název relačního objektu. Název musí začínat písmenem a může obsahovat maximálně 40 znaků. Může obsahovat čísla a podtržítka, ale nesmí obsahovat interpunkci ani mezery.
Tabulka lpszTable
Název primární tabulky v relaci. Pokud tabulka neexistuje, mfc vyvolá výjimku typu CDaoException.
lpszForeignTable
Název cizí tabulky v relaci. Pokud tabulka neexistuje, mfc vyvolá výjimku typu CDaoException
.
lAttributes
Dlouhá hodnota, která obsahuje informace o typu relace. Tuto hodnotu můžete použít k vynucení referenční integrity, mimo jiné. Pomocí bitové operátoru OR (|
) můžete zkombinovat některou z následujících hodnot (pokud kombinace dává smysl):
dbRelationUnique
Relace je 1:1.dbRelationDontEnforce
Relace se nevynucuje (bez referenční integrity).dbRelationInherited
Relace existuje v neaktuální databázi, která obsahuje dvě připojené tabulky.dbRelationUpdateCascade
Aktualizace se kaskádují (další informace o kaskádách najdete v tématu Poznámky).dbRelationDeleteCascade
Odstranění se bude kaskádovitě.
lpszField
Ukazatel na řetězec ukončený hodnotou null obsahující název pole v primární tabulce (pojmenované lpszTable).
lpszForeignField
Ukazatel na řetězec ukončený hodnotou null obsahující název pole v cizí tabulce (pojmenované lpszForeignTable).
relinfo
Odkaz na CDaoRelationInfo objekt, který obsahuje informace o relaci, kterou chcete vytvořit.
Poznámky
Relace nemůže zahrnovat dotaz nebo připojenou tabulku z externí databáze.
První verzi funkce použijte, pokud relace zahrnuje jedno pole v každé ze dvou tabulek. Druhou verzi použijte, pokud relace zahrnuje více polí. Maximální počet polí ve vztahu je 14.
Tato akce vytvoří základní relační objekt DAO, ale jedná se o podrobnosti implementace MFC, protože zapouzdření relačních objektů je obsaženo v třídě CDaoDatabase
. MFC neposkytuje třídu pro relace.
Pokud nastavíte atributy relačního objektu tak, aby aktivoval kaskádové operace, databázový stroj automaticky aktualizuje nebo odstraní záznamy v jedné nebo více dalších tabulkách, když se změní související tabulky primárního klíče.
Předpokládejme například, že vytvoříte kaskádovou relaci odstranění mezi tabulkou Zákazníci a tabulkou Objednávky. Když odstraníte záznamy z tabulky Zákazníci, odstraní se také záznamy v tabulce Objednávky související s tímto zákazníkem. Pokud navíc vytvoříte kaskádové relace odstranění mezi tabulkou Orders a dalšími tabulkami, záznamy z těchto tabulek se při odstranění záznamů z tabulky Zákazníci automaticky odstraní.
Související informace naleznete v tématu CreateRelation Method v nápovědě k daO.
CDaoDatabase::D eleteQueryDef
Voláním této členské funkce odstraníte zadaný dotaz – uložený dotaz – z kolekce QueryDefs objektu CDaoDatabase
.
void DeleteQueryDef(LPCTSTR lpszName);
Parametry
lpszName
Název uloženého dotazu, který chcete odstranit.
Poznámky
Potom už tento dotaz není v databázi definován.
Informace o vytváření objektů querydef naleznete ve třídě CDaoQueryDef. Objekt querydef se při vytváření CDaoQueryDef
objektu přidružuje k určitému CDaoDatabase
objektu a předá ho ukazatel na databázový objekt.
CDaoDatabase::D eleteRelation
Voláním této členské funkce odstraníte existující relaci z kolekce Relace databázového objektu.
void DeleteRelation(LPCTSTR lpszName);
Parametry
lpszName
Název relace k odstranění.
Poznámky
Poté vztah již neexistuje.
Související informace najdete v tématu "Metoda odstranění" v nápovědě k DAO.
CDaoDatabase::D eleteTableDef
Voláním této členské funkce odstraníte zadanou tabulku a všechna její data z kolekce TableDefs objektu CDaoDatabase
.
void DeleteTableDef(LPCTSTR lpszName);
Parametry
lpszName
Název tabulky, která se má odstranit.
Poznámky
Tato tabulka se poté už v databázi nedefinuje.
Poznámka:
Buďte velmi opatrní, abyste neodstraňovat systémové tabulky.
Informace o vytváření objektů tabledef naleznete v tématu třídy CDaoTableDef. Objekt tabledef se při vytváření CDaoTableDef
objektu přidružuje k určitému CDaoDatabase
objektu a předá ho ukazatel na databázový objekt.
Související informace najdete v tématu "Metoda odstranění" v nápovědě k DAO.
CDaoDatabase::Execute
Voláním této členské funkce spustíte akční dotaz nebo spustíte příkaz SQL v databázi.
void Execute(
LPCTSTR lpszSQL,
int nOptions = dbFailOnError);
Parametry
lpszSQL
Ukazatel na řetězec ukončený hodnotou null obsahující platný příkaz SQL ke spuštění.
nOptions
Celé číslo, které určuje možnosti týkající se integrity dotazu. Pomocí bitové operátoru OR (|
) můžete zkombinovat libovolnou z následujících konstant za předpokladu, že kombinace dává smysl. Například byste nekombinovat dbInconsistent
s dbConsistent
:
dbDenyWrite
Odepřít oprávnění k zápisu jiným uživatelům.dbInconsistent
(Výchozí) Nekonzistentní aktualizacedbConsistent
Konzistentní aktualizace.dbSQLPassThrough
Průchozí sql Způsobí předání příkazu SQL do zdroje dat ODBC ke zpracování.dbFailOnError
Vrácení aktualizací zpět, pokud dojde k chybě.dbSeeChanges
Pokud jiný uživatel mění data, která upravujete, vygeneruje chybu za běhu.
Poznámka:
Pokud se zahrne obojí dbInconsistent
i dbConsistent
v případě, že není zahrnuta ani jedna, je výsledkem výchozí hodnota. Vysvětlenítěchtoch
Poznámky
Execute
funguje jenom pro akční dotazy nebo předávací dotazy SQL, které nevrací výsledky. Nefunguje u výběrových dotazů, které vrací záznamy.
Definice a informace o akčních dotazech najdete v tématech Akční dotaz a Provedení metody v nápovědě k DAO.
Tip
Vzhledem k syntakticky správnému příkazu SQL a správným oprávněním nedojde k Execute
selhání členské funkce ani v případě, že nelze upravit nebo odstranit jeden řádek. Proto vždy použijte dbFailOnError
možnost při použití Execute
členské funkce ke spuštění aktualizačního nebo odstraňovacího dotazu. Tato možnost způsobí, že mfc vyvolá výjimku typu CDaoException a vrátí zpět všechny úspěšné změny, pokud některý z ovlivněných záznamů je uzamčen a nelze je aktualizovat nebo odstranit. Mějte na paměti, že vždy můžete zavolat GetRecordsAffected
, abyste viděli, kolik záznamů se to týká.
Volání GetRecordsAffected členské funkce databázového objektu určit počet záznamů ovlivněných posledním Execute
voláním. Například GetRecordsAffected
vrátí informace o počtu odstraněných, aktualizovaných nebo vložených záznamů při provádění akčního dotazu. Vrácený počet neodráží změny v souvisejících tabulkách, pokud se kaskádové aktualizace nebo odstranění projeví.
Execute
nevrací sadu záznamů. Použití Execute
v dotazu, který vybere záznamy způsobí, že MFC vyvolá výjimku typu CDaoException
. (Není k dispozici žádná ExecuteSQL
členová funkce podobná CDatabase::ExecuteSQL
.)
CDaoDatabase::GetConnect
Voláním této členské funkce načtěte připojovací řetězec sloužící k připojení objektu CDaoDatabase
k databázi ODBC nebo ISAM.
CString GetConnect();
Návratová hodnota
Připojovací řetězec, pokud byl open úspěšně volán ve zdroji dat ODBC; v opačném případě prázdný řetězec. Pro Microsoft Jet (. Databáze MDB) je řetězec vždy prázdný, pokud ho nenastavíte pro použití s možností použitou s dbSQLPassThrough
členovou funkcí Execute nebo použitým při otevírání sady záznamů.
Poznámky
Řetězec poskytuje informace o zdroji otevřené databáze nebo databáze použité v předávacím dotazu. Připojovací řetězec se skládá ze specifikátoru typu databáze a nula nebo více parametrů oddělených středníky.
Poznámka:
Použití tříd rozhraní MFC DAO pro připojení ke zdroji dat prostřednictvím rozhraní ODBC je méně efektivní než připojení prostřednictvím připojené tabulky.
Poznámka:
Připojovací řetězec slouží k předání dalších informací rozhraní ODBC a určitým ovladačům ISAM podle potřeby. Nepoužívá se pro . Databáze MDB. V případě základních tabulek databáze Microsoft Jet je připojovací řetězec prázdný řetězec ("") s výjimkou případů, kdy ho použijete pro předávací dotaz SQL, jak je popsáno v části Návratová hodnota výše.
Popis vytvoření připojovací řetězec najdete v členské funkci Open. Jakmile bude připojovací řetězec nastavena ve Open
volání, můžete ho později použít ke kontrole nastavení a určit typ, cestu, ID uživatele, heslo nebo zdroj dat ODBC databáze.
CDaoDatabase::GetName
Voláním této členské funkce načtěte název aktuálně otevřené databáze, což je název existujícího databázového souboru nebo názvu registrovaného zdroje dat ODBC.
CString GetName();
Návratová hodnota
Úplná cesta a název souboru databáze v případě úspěchu; v opačném případě prázdný řetězec CString.
Poznámky
Pokud vaše síť podporuje jednotné zásady vytváření názvů (UNC), můžete také zadat síťovou cestu, například \\\MYSERVER\\MYSHARE\\MYDIR\\MYDB. MDB". (Dvojité zpětné lomítka jsou vyžadována v řetězcových literálech, protože "\" je řídicí znak jazyka C++.)
Tento název můžete například zobrazit v nadpisu. Pokud dojde k chybě při načítání názvu, MFC vyvolá výjimku typu CDaoException.
Poznámka:
Kvůli lepšímu výkonu při přístupu k externím databázím doporučujeme připojit tabulky externích databází k databázi Microsoft Jet (. MDB) místo přímého připojení ke zdroji dat.
Typ databáze je označen souborem nebo adresářem, na který cesta odkazuje, následujícím způsobem:
Pathname odkazuje na.. | Typ databáze |
---|---|
. Soubor MDB | Databáze Microsoft Jet (Microsoft Access) |
Adresář, který obsahuje . Soubory DBF | Databáze dBASE |
Adresář, který obsahuje soubor .XLS | Databáze Microsoft Excelu |
Adresář, který obsahuje . Soubory PDX | Databáze Paradox |
Adresář, který obsahuje správně formátované textové databázové soubory | Databáze formátu textu |
Pro databáze ODBC, jako je SQL Server a Oracle, připojovací řetězec databáze identifikuje název zdroje dat (DSN), který je zaregistrovaný rozhraním ODBC.
CDaoDatabase::GetQueryDefCount
Voláním této členské funkce načtěte počet dotazů definovaných v kolekci QueryDefs databáze.
short GetQueryDefCount();
Návratová hodnota
Počet dotazů definovaných v databázi.
Poznámky
GetQueryDefCount
je užitečná, pokud potřebujete procházet všechny parametry querydefs v kolekci QueryDefs. Informace o daném dotazu v kolekci získáte v tématu GetQueryDefInfo.
CDaoDatabase::GetQueryDefInfo
Voláním této členské funkce získáte různé druhy informací o dotazu definovaném v databázi.
void GetQueryDefInfo(
int nIndex,
CDaoQueryDefInfo& querydefinfo,
DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
void GetQueryDefInfo(
LPCTSTR lpszName,
CDaoQueryDefInfo& querydefinfo,
DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
Parametry
nIndex
Index předdefinovaného dotazu v kolekci QueryDefs databáze pro vyhledávání podle indexu.
querydefinfo
Odkaz na CDaoQueryDefInfo objekt, který vrací požadované informace.
dwInfoOptions
Možnosti, které určují, které informace o sadě záznamů se mají načíst. Dostupné možnosti jsou zde uvedeny spolu s tím, co způsobí, že funkce vrátí o sadě záznamů:
AFX_DAO_PRIMARY_INFO (výchozí) název, typ
AFX_DAO_SECONDARY_INFO Primární informace plus: Datum vytvoření, datum poslední aktualizace, vrácení záznamů, aktualizovatelné
AFX_DAO_ALL_INFO primární a sekundární informace plus: SQL, Connect, ODBCTimeout
lpszName
Řetězec obsahující název dotazu definovaného v databázi pro vyhledávání podle názvu.
Poznámky
Zadají se dvě verze funkce, takže můžete vybrat dotaz buď pomocí indexu v kolekci QueryDefs databáze, nebo podle názvu dotazu.
Popis informací vrácených v dotazudefinfo naleznete v CDaoQueryDefInfo struktury. Tato struktura obsahuje členy, které odpovídají položkám informací uvedených výše v popisu dwInfoOptions. Pokud požadujete jednu úroveň informací, získáte také všechny předchozí úrovně informací.
CDaoDatabase::GetQueryTimeout
Voláním této členské funkce načtěte aktuální počet sekund, aby se povolil před vypršením časového limitu následných operací v připojené databázi.
short GetQueryTimeout();
Návratová hodnota
Krátké celé číslo obsahující hodnotu časového limitu v sekundách.
Poznámky
Kvůli problémům se síťovým přístupem, nadměrnému zpracování dotazů atd. může dojít k vypršení časového limitu operace. I když se nastavení projeví, ovlivní všechny operace otevření, přidání nových, aktualizací a odstranění u všech sad záznamů přidružených k tomuto CDaoDatabase
objektu. Aktuální nastavení časového limitu můžete změnit voláním SetQueryTimeout. Změna hodnoty časového limitu dotazu pro sadu záznamů po otevření nezmění hodnotu sady záznamů. Například následující operace přesunutí nepoužívají novou hodnotu. Výchozí hodnota je zpočátku nastavena při inicializaci databázového stroje.
Výchozí hodnota časových limitů dotazu se přebírá z registru Systému Windows. Pokud neexistuje žádné nastavení registru, výchozí hodnota je 60 sekund. Ne všechny databáze podporují možnost nastavit hodnotu časového limitu dotazu. Pokud nastavíte hodnotu časového limitu dotazu 0, nedojde k žádnému vypršení časového limitu; a komunikace s databází může přestat reagovat. Toto chování může být užitečné při vývoji. Pokud volání selže, mfc vyvolá výjimku typu CDaoException.
Související informace najdete v tématu "QueryTimeout – vlastnost" v nápovědě k DAO.
CDaoDatabase::GetRecordsAffected
Voláním této členské funkce určíte počet záznamů ovlivněných posledním voláním členské funkce Execute .
long GetRecordsAffected();
Návratová hodnota
Dlouhé celé číslo obsahující počet ovlivněných záznamů.
Poznámky
Vrácená hodnota zahrnuje počet odstraněných, aktualizovaných nebo vložených pomocí akčního dotazu.Execute
Vrácený počet neodráží změny v souvisejících tabulkách, pokud se kaskádové aktualizace nebo odstranění projeví.
Související informace naleznete v tématu "RecordsAffected Property" v nápovědě k DAO.
CDaoDatabase::GetRelationCount
Voláním této členské funkce získáte počet relací definovaných mezi tabulkami v databázi.
short GetRelationCount();
Návratová hodnota
Počet relací definovaných mezi tabulkami v databázi.
Poznámky
GetRelationCount
je užitečná, pokud potřebujete procházet všechny definované relace v kolekci Relací databáze. Informace o daném vztahu v kolekci získáte v tématu GetRelationInfo.
Pokud chcete znázornit koncept relace, zvažte tabulku Dodavatelé a tabulku Produkty, která může mít relaci 1:N. V tomto vztahu může jeden dodavatel dodat více než jeden produkt. Další vztahy jsou 1:1 a M:N.
CDaoDatabase::GetRelationInfo
Voláním této členské funkce získáte informace o zadaném vztahu v kolekci Relací databáze.
void GetRelationInfo(
int nIndex,
CDaoRelationInfo& relinfo,
DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
void GetRelationInfo(
LPCTSTR lpszName,
CDaoRelationInfo& relinfo,
DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
Parametry
nIndex
Index relačního objektu v kolekci Relace databáze pro vyhledávání podle indexu.
relinfo
Odkaz na CDaoRelationInfo objekt, který vrací požadované informace.
dwInfoOptions
Možnosti, které určují, které informace o vztahu k načtení. Dostupné možnosti jsou zde uvedeny spolu s tím, co způsobí, že funkce vrátí o relaci:
AFX_DAO_PRIMARY_INFO (výchozí) název, tabulka, cizí tabulka
AFX_DAO_SECONDARY_INFO atributy, informace o polích
Informace o poli je CDaoRelationFieldInfo objekt obsahující pole z primární tabulky zahrnuté v relaci.
lpszName
Řetězec obsahující název relačního objektu pro vyhledávání podle názvu.
Poznámky
Dvě verze této funkce poskytují přístup buď podle indexu, nebo podle názvu. Popis informací vrácených v relinfo naleznete v CDaoRelationInfo struktury. Tato struktura obsahuje členy, které odpovídají položkám informací uvedených výše v popisu dwInfoOptions. Pokud požadujete informace na jedné úrovni, získáte také informace na všech předchozích úrovních.
Poznámka:
Pokud nastavíte atributy relačního objektu tak, aby aktivoval kaskádové operace (dbRelationUpdateCascades
nebo dbRelationDeleteCascades
), databázový stroj Microsoft Jet automaticky aktualizuje nebo odstraní záznamy v jedné nebo více dalších tabulkách, když se změny provádějí v souvisejících tabulkách primárních klíčů. Předpokládejme například, že vytvoříte kaskádovou relaci odstranění mezi tabulkou Zákazníci a tabulkou Objednávky. Když odstraníte záznamy z tabulky Zákazníci, odstraní se také záznamy v tabulce Objednávky související s tímto zákazníkem. Pokud navíc vytvoříte kaskádové relace odstranění mezi tabulkou Orders a dalšími tabulkami, záznamy z těchto tabulek se při odstranění záznamů z tabulky Zákazníci automaticky odstraní.
CDaoDatabase::GetTableDefCount
Voláním této členské funkce načtěte počet tabulek definovaných v databázi.
short GetTableDefCount();
Návratová hodnota
Počet tabulek definovaných v databázi.
Poznámky
GetTableDefCount
je užitečné, pokud potřebujete procházet všechny tabulky v kolekci TableDefs databáze. Informace o dané tabulce v kolekci získáte v tématu GetTableDefInfo.
CDaoDatabase::GetTableDefInfo
Voláním této členské funkce získáte různé druhy informací o tabulce definované v databázi.
void GetTableDefInfo(
int nIndex,
CDaoTableDefInfo& tabledefinfo,
DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
void GetTableDefInfo(
LPCTSTR lpszName,
CDaoTableDefInfo& tabledefinfo,
DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
Parametry
nIndex
Index objektu tabledef v kolekci TableDefs databáze pro vyhledávání podle indexu.
tabledefinfo
Odkaz na CDaoTableDefInfo objekt, který vrací požadované informace.
dwInfoOptions
Možnosti, které určují, které informace o tabulce se mají načíst. Dostupné možnosti jsou zde uvedeny spolu s tím, co způsobí, že funkce vrátí o relaci:
AFX_DAO_PRIMARY_INFO (výchozí) název, aktualizovatelný, atributy
AFX_DAO_SECONDARY_INFO Primární informace plus: Datum vytvoření, datum poslední aktualizace, název zdrojové tabulky, připojení
AFX_DAO_ALL_INFO primární a sekundární informace plus: ověřovací pravidlo, ověřovací text, počet záznamů
lpszName
Název objektu tabledef pro vyhledávání podle názvu.
Poznámky
Zadají se dvě verze funkce, takže můžete vybrat tabulku buď podle indexu v kolekci TableDefs databáze, nebo podle názvu tabulky.
Popis informací vrácených v tabulce tabledefinfo naleznete v CDaoTableDefInfo struktury. Tato struktura obsahuje členy, které odpovídají položkám informací uvedených výše v popisu dwInfoOptions. Pokud požadujete informace na jedné úrovni, získáte také informace o všech předchozích úrovních.
Poznámka:
Možnost AFX_DAO_ALL_INFO poskytuje informace, které je možné pomalu získat. V takovém případě může být počítání záznamů v tabulce velmi časově náročné, pokud existuje mnoho záznamů.
CDaoDatabase::GetVersion
Voláním této členské funkce určíte verzi souboru databáze Microsoft Jet.
CString GetVersion();
Návratová hodnota
A CString , který označuje verzi databázového souboru přidruženého k objektu.
Poznámky
Vrácená hodnota představuje číslo verze ve formátu major.minor; Například "3.0". Číslo verze produktu (například 3.0) se skládá z čísla verze (3), tečky a čísla verze (0). Aktuální verze jsou 1.0, 1.1, 2.0 a 3.0.
Související informace najdete v tématu "Vlastnost verze" v nápovědě k dao.
CDaoDatabase::IsOpen
Voláním této členské funkce určíte, zda CDaoDatabase
je objekt aktuálně otevřen v databázi.
BOOL IsOpen() const;
Návratová hodnota
Nenulové, pokud CDaoDatabase
je objekt aktuálně otevřený; jinak 0.
Poznámky
CDaoDatabase::m_pDAODatabase
Obsahuje ukazatel na rozhraní OLE pro objekt databáze DAO, který je základem objektu CDaoDatabase
.
Poznámky
Tento ukazatel použijte, pokud potřebujete přímý přístup k rozhraní DAO.
Informace o přímém volání DAO naleznete v technické poznámce 54.
CDaoDatabase::m_pWorkspace
Obsahuje ukazatel na objekt CDaoWorkspace , který obsahuje databázový objekt.
Poznámky
Tento ukazatel použijte, pokud potřebujete přímý přístup k pracovnímu prostoru. Chcete-li například získat ukazatele na jiné databázové objekty v kolekci Databáze pracovního prostoru.
CDaoDatabase::Open
Chcete-li inicializovat nově vytvořený CDaoDatabase
objekt, který představuje existující databázi, je nutné volat tuto členovou funkci.
virtual void Open(
LPCTSTR lpszName,
BOOL bExclusive = FALSE,
BOOL bReadOnly = FALSE,
LPCTSTR lpszConnect = _T(""));
Parametry
lpszName
Řetězcový výraz, který je názvem existujícího Microsoft Jetu (. Soubor databáze MDB. Pokud má název souboru příponu, je povinný. Pokud vaše síť podporuje jednotné zásady vytváření názvů (UNC), můžete také zadat síťovou cestu, například \\\MYSERVER\\MYSHARE\\MYDIR\\MYDB. MDB". (Dvojité zpětné lomítka jsou vyžadována v řetězcových literálech, protože "\" je řídicí znak jazyka C++.)
Při použití lpszName platí některé důležité informace. Pokud:
Odkazuje na databázi, která je již otevřena pro výhradní přístup jiného uživatele, MFC vyvolá výjimku typu CDaoException. Výjimku vyvolejte uživateli, abyste věděli, že databáze není k dispozici.
Je prázdný řetězec ("") a lpszConnect je ODBC; zobrazí se dialogové okno se seznamem všech registrovaných názvů zdrojů dat ODBC, aby uživatel mohl vybrat databázi. Měli byste se vyhnout přímým připojením ke zdrojům dat ODBC; místo toho použijte připojenou tabulku.
Jinak neodkazuje na existující databázi nebo platný název zdroje dat ODBC, mfc vyvolá výjimku typu
CDaoException
.
Poznámka:
Podrobnosti o kódech chyb DAO najdete v jazyce DAOERR. H soubor. Související informace najdete v tématu Chyby zachycení přístupu k datům v nápovědě k dao.
bExclusive
Logická hodnota, která má hodnotu TRUE, pokud má být databáze otevřena pro výhradní (nesdílený) přístup, a NEPRAVDA, pokud má být databáze otevřena pro sdílený přístup. Pokud tento argument vynecháte, databáze se otevře pro sdílený přístup.
bReadOnly
Logická hodnota, která má hodnotu TRUE, pokud má být databáze otevřena pro přístup jen pro čtení a NEPRAVDA, pokud má být databáze otevřena pro přístup pro čtení a zápis. Pokud tento argument vynecháte, databáze se otevře pro přístup pro čtení a zápis. Všechny závislé sady záznamů dědí tento atribut.
lpszConnect
Řetězcový výraz používaný k otevření databáze. Tento řetězec představuje argumenty připojení ODBC. Abyste mohli zadat zdrojový řetězec, musíte zadat výhradní a jen pro čtení. Pokud je databáze databáze Microsoft Jet (. MDB), tento řetězec je prázdný (""). Syntaxe výchozí hodnoty – _T("")– poskytuje přenositelnost pro Unicode a také sestavení ANSI vaší aplikace.
Poznámky
Open
přidruží databázi k podkladovému objektu DAO. Databázový objekt nelze použít k vytvoření sady záznamů, tabledef nebo querydef objektů, dokud nebude inicializován. Open
připojí databázový objekt do kolekce Databáze přidruženého pracovního prostoru.
Parametry použijte následujícím způsobem:
Pokud otevíráte Microsoft Jet (. databáze MDB), použijte parametr lpszName a předejte prázdný řetězec pro parametr lpszConnect nebo předejte řetězec hesla formuláře "; PWD=password", pokud je databáze chráněná heslem (. Pouze databáze MDB).
Pokud otevíráte zdroj dat ODBC, předejte platný připojovací řetězec ODBC v lpszConnect a prázdný řetězec v lpszName.
Související informace najdete v tématu Metoda OpenDatabase v nápovědě k dao.
Poznámka:
Pokud chcete dosáhnout lepšího výkonu při přístupu k externím databázím, včetně databází ISAM a zdrojů dat ODBC, doporučujeme připojit tabulky externích databází k databázi stroje Microsoft Jet (. MDB) místo přímého připojení ke zdroji dat.
Pokud je například hostitel DBMS nedostupný, může dojít k vypršení časového limitu připojení. Pokud pokus o připojení selže, Open
vyvolá výjimku typu CDaoException.
Zbývající poznámky platí pouze pro databáze ODBC:
Pokud je databáze databáze ODBC a parametry ve volání Open
neobsahují dostatek informací pro vytvoření připojení, ovladač ODBC otevře dialogové okno pro získání potřebných informací od uživatele. Při volání Open
, vaše připojovací řetězec, lpszConnect, je uložen soukromě a je k dispozici voláním GetConnect členské funkce.
Pokud chcete, můžete otevřít vlastní dialogové okno před voláním Open
získat informace od uživatele, například heslo, a pak tyto informace přidat do připojovací řetězec, do Open
kterého předáte . Nebo můžete chtít uložit připojovací řetězec, kterou předáváte (možná v registru Windows), abyste ho mohli znovu použít při příštím volání Open
aplikace na CDaoDatabase
objekt.
Můžete také použít připojovací řetězec pro více úrovní autorizace přihlášení (každý pro jiný CDaoDatabase
objekt) nebo ke sdělení dalších informací specifických pro databázi.
CDaoDatabase::SetQueryTimeout
Voláním této členské funkce přepíšete výchozí počet sekund, které se povolí před vypršením časového limitu následných operací v připojené databázi.
void SetQueryTimeout(short nSeconds);
Parametry
nSeconds
Počet sekund, které se mají povolit, než vyprší časový limit pokusu o dotaz.
Poznámky
Kvůli problémům se síťovým přístupem, nadměrnému času zpracování dotazů atd. může dojít k vypršení časového limitu operace. Pokud SetQueryTimeout
chcete změnit hodnotu časového limitu dotazu, zavolejte před otevřením sady záznamů nebo před voláním členské funkce AddNew, Update nebo Delete . Nastavení ovlivní všechny následující Open, AddNew
, Update
a Delete
volání všech sad záznamů přidružených k tomuto CDaoDatabase
objektu. Změna hodnoty časového limitu dotazu pro sadu záznamů po otevření nezmění hodnotu sady záznamů. Například následující operace přesunutí nepoužívají novou hodnotu.
Výchozí hodnota časových limitů dotazu je 60 sekund. Ne všechny databáze podporují možnost nastavit hodnotu časového limitu dotazu. Pokud nastavíte hodnotu časového limitu dotazu 0, nedojde k žádnému vypršení časového limitu; komunikace s databází může přestat reagovat. Toto chování může být užitečné při vývoji.
Související informace najdete v tématu "QueryTimeout – vlastnost" v nápovědě k DAO.
Viz také
CObject – třída
Graf hierarchie
CDaoWorkspace – třída
CDaoRecordset – třída
CDaoTableDef – třída
CDaoQueryDef – třída
CDatabase – třída
CDaoException – třída