Sdílet prostřednictvím


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 CDaoWorkspaceBeginTrans, 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

CObject

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ština

  • dbLangArabic Arabština

  • dbLangCyrillic Ruština

  • dbLangCzech Čeština

  • dbLangDutch Holandština

  • dbLangGreek Řečtina

  • dbLangHebrew Hebrejština

  • dbLangHungarian Maďarština

  • dbLangIcelandic Islandština

  • dbLangNordic Severské jazyky (pouze databázový stroj Microsoft Jet verze 1.0)

  • dbLangNorwdan Norština a dánština

  • dbLangPolish Polština

  • dbLangSpanish Tradiční španělština

  • dbLangSwedfin Švédština a finština

  • dbLangTurkish 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í aktualizace

  • dbConsistent 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 Openkteré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, Updatea 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