Megosztás a következőn keresztül:


CDatabase osztály

Megjegyzés:

A Microsoft Foundation Classes (MFC) könyvtár továbbra is támogatott. A továbbiakban azonban nem adunk hozzá funkciókat, és nem frissítjük a dokumentációt.

Egy adatforráshoz való kapcsolatot jelöl, amelyen keresztül az adatforráson is működhet.

Szemantika

class CDatabase : public CObject

Tagok

Nyilvános konstruktorok

Név Description
CDatabase::CDatabase Egy CDatabase objektumot hoz létre. Az objektumot inicializálni kell hívással OpenEx vagy Open.

Nyilvános metódusok

Név Description
CDatabase::BeginTrans Elindít egy "tranzakciót" – az osztály , Edités DeleteUpdate az AddNewosztály CRecordset tagfüggvényei felé irányuló visszafordítható hívások sorozatát a csatlakoztatott adatforráson. Az adatforrásnak támogatnia kell a BeginTrans tranzakciókat, hogy bármilyen hatása legyen.
CDatabase::BindParameters Lehetővé teszi paraméterek kötését hívás CDatabase::ExecuteSQLelőtt.
CDatabase::Cancel Megszakít egy aszinkron műveletet vagy egy folyamatot egy második szálról.
CDatabase::CanTransact Nonzero értéket ad vissza, ha az adatforrás támogatja a tranzakciókat.
CDatabase::CanUpdate Nonzero értéket ad vissza, ha az CDatabase objektum frissíthető (nem írásvédett).
CDatabase::Close Bezárja az adatforrás-kapcsolatot.
CDatabase::CommitTrans Befejez egy tranzakciót, amely a következővel BeginTranskezdődött: . Az adatforrást módosító tranzakció parancsai végrehajtásra kerülnek.
CDatabase::ExecuteSQL Végrehajt egy SQL-utasítást. A rendszer nem ad vissza adatrekordokat.
CDatabase::GetBookmarkPersistence Azonosítja azokat a műveleteket, amelyeken keresztül a könyvjelzők a rekordhalmaz-objektumokon maradnak.
CDatabase::GetConnect Az objektum adatforráshoz való csatlakoztatásához használt ODBC kapcsolati CDatabase sztringet adja vissza.
CDatabase::GetCursorCommitBehavior Azonosítja a tranzakció véglegesítésének egy nyitott rekordhalmaz-objektumra gyakorolt hatását.
CDatabase::GetCursorRollbackBehavior Azonosítja a tranzakció egy nyitott rekordhalmaz-objektumra való visszagördülésének hatását.
CDatabase::GetDatabaseName A jelenleg használt adatbázis nevét adja vissza.
CDatabase::IsOpen Nonzero értéket ad vissza, ha az CDatabase objektum jelenleg egy adatforráshoz csatlakozik.
CDatabase::OnSetOptions A keretrendszer meghívta a standard kapcsolati beállítások beállításához. Az alapértelmezett implementáció beállítja a lekérdezés időtúllépési értékét. Ezeket a beállításokat előre is létrehozhatja a hívással SetQueryTimeout.
CDatabase::Open Kapcsolatot létesít egy adatforrással (ODBC-illesztőn keresztül).
CDatabase::OpenEx Kapcsolatot létesít egy adatforrással (ODBC-illesztőn keresztül).
CDatabase::Rollback Az aktuális tranzakció során végrehajtott módosítások megfordítása. Az adatforrás a hívás során BeginTrans meghatározott korábbi állapotába tér vissza változatlanul.
CDatabase::SetLoginTimeout Azt a másodpercet adja meg, amely után egy adatforrás-kapcsolati kísérlet időtúllépést fog végrehajtani.
CDatabase::SetQueryTimeout Azt a másodpercet adja meg, amely után az adatbázis-lekérdezési műveletek időtúllépést fognak végrehajtani. Az összes későbbi rekordhalmazraOpen, AddNewés EditDelete hívásra hatással van.

Nyilvános adatok tagjai

Név Description
CDatabase::m_hdbc Open Database Connectivity (ODBC) kapcsolat kezeli az adatforrást. Írja be a HDBC-t.

Megjegyzések

Az adatforrások egy bizonyos adatbázis-kezelő rendszer (DBMS) által üzemeltetett adatok adott példányai. Ilyenek például a Microsoft SQL Server, a Microsoft Access, a Borland dBASE és az xBASE. Egyszerre egy vagy több CDatabase objektum is aktív lehet az alkalmazásban.

Megjegyzés:

Ha az Open Database Connectivity (ODBC) osztályok helyett az Adatelérési objektumok (DAO) osztályokkal dolgozik, használja inkább az osztályt CDaoDatabase . További információ: Áttekintés: Adatbázis-programozás.

A használathoz CDatabasehozzon létre egy objektumot CDatabase , és hívja meg annak tagfüggvényét OpenEx . Ezzel megnyit egy kapcsolatot. Amikor ezután objektumokat hoz létre CRecordset a csatlakoztatott adatforráson való működéshez, adja át a rekordhalmaz-konstruktornak egy mutatót az CDatabase objektumnak. Amikor befejezi a kapcsolat használatát, hívja meg a tagfüggvényt Close , és semmisítse meg az CDatabase objektumot. Close bezárja azokat a rekordhalmazokat, amelyeket korábban nem zárt be.

További információ CDatabase: Adatforrás (ODBC) és áttekintés: Adatbázis-programozás.

Öröklési hierarchia

CObject

CDatabase

Requirements

Fejléc:afxdb.h

CDatabase::BeginTrans

Hívja meg ezt a tagfüggvényt, hogy tranzakciót kezdjen a csatlakoztatott adatforrással.

BOOL BeginTrans();

Visszaadott érték

Nem ad vissza, ha a hívás sikeres volt, és a módosítások csak manuálisan lesznek véglegesíthetők; egyéb esetben 0.

Megjegyzések

A tranzakciók egy vagy több hívásból állnak, amelyek egy AddNewCRecordset objektum , Edit, Deleteés Update tagfüggvényét kérik. A tranzakció megkezdése előtt az CDatabase objektumnak már csatlakoznia kell az adatforráshoz a tagfüggvény meghívásával OpenExOpen . A tranzakció befejezéséhez hívja meg CommitTrans , hogy fogadja el az adatforrás összes módosítását (és hajtsa végre), vagy hívja meg Rollback a teljes tranzakció megszakítását. Hívás BeginTrans a tranzakcióban érintett rekordhalmazok megnyitása után, és a lehető legközelebb a tényleges frissítési műveletekhez.

Caution

Az ODBC-illesztőprogramtól függően a hívás BeginTrans előtt meg kell nyitnia egy rekordhalmazt, ami problémákat okozhat a hívás Rollbacksorán. Ellenőrizze a használt illesztőprogramot. Ha például a Microsoft ODBC Desktop Driver Pack 3.0 csomagban található Microsoft Access-illesztőt használja, figyelembe kell vennie a Jet adatbázismotor azon követelményét, hogy ne kezdjen tranzakciót olyan adatbázison, amely nyitott kurzorral rendelkezik. Az MFC-adatbázisosztályokban a megnyitott kurzor egy nyitott CRecordset objektumot jelent. További információ: Technical Note 68.

BeginTrans az adatrekordokat a kiszolgálón is zárolhatja a kért egyidejűségtől és az adatforrás képességeitől függően. Az adatok zárolásával kapcsolatos információkért tekintse meg a Rekordhalmaz: Rekordok zárolása (ODBC) című cikket.

A felhasználó által definiált tranzakciókat a Tranzakció (ODBC) című cikk ismerteti.

BeginTrans meghatározza azt az állapotot, amelyre a tranzakciók sorozata visszagördíthető (fordított). Ha új állapotot szeretne létrehozni a visszaállításokhoz, véglegesítse az aktuális tranzakciót, majd hívja BeginTrans újra.

Caution

Hívás nélkül újra hívható BeginTransCommitTrans , vagy Rollback hiba.

Hívja meg a CanTransact tagfüggvényt annak megállapításához, hogy az illesztőprogram támogatja-e egy adott adatbázis tranzakcióit. Azt is meg kell hívnia GetCursorCommitBehavior , és GetCursorRollbackBehavior meg kell határoznia a kurzor megőrzésének támogatását.

A tranzakciókról további információt a Tranzakció (ODBC) című cikkben talál.

Example

Lásd a Tranzakció: Tranzakció végrehajtása rekordhalmazban (ODBC) című cikket.

CDatabase::BindParameters

Felülbírálás BindParameters , ha meg kell kötnie a paramétereket a hívás CDatabase::ExecuteSQLelőtt.

virtual void BindParameters(HSTMT hstmt);

Paraméterek

hstmt
Az ODBC utasításkezelő, amelyhez paramétereket szeretne kötni.

Megjegyzések

Ez a módszer akkor hasznos, ha nincs szüksége egy tárolt eljárás eredményhalmazára.

A felülbírálás során hívja meg SQLBindParameters és kapcsolja össze a kapcsolódó ODBC-függvényeket a paraméterek kötéséhez. Az MFC meghívja a felülbírálást a hívás előtt.ExecuteSQL Nem kell meghívnia SQLPreparea hívásokat ExecuteSQLSQLExecDirect , és megsemmisíti azokat hstmt, amelyeket csak egyszer használ.

CDatabase::Cancel

Hívja meg ezt a tagfüggvényt, és kérje meg, hogy az adatforrás szakítsa meg a folyamatban lévő aszinkron műveletet vagy egy második szálból származó folyamatot.

void Cancel();

Megjegyzések

Vegye figyelembe, hogy az MFC ODBC-osztályok már nem használnak aszinkron feldolgozást; aszinkron művelet végrehajtásához közvetlenül meg kell hívnia az ODBC API függvényt SQLSetConnectOption. További információ: Aszinkron végrehajtás.

CDatabase::CanTransact

Hívja meg ezt a tagfüggvényt annak meghatározásához, hogy az adatbázis engedélyezi-e a tranzakciókat.

BOOL CanTransact() const;

Visszaadott érték

Nonzero, ha az objektumot CDatabase használó rekordhalmazok engedélyezik a tranzakciókat, egyébként 0.

Megjegyzések

A tranzakciókról további információt a Tranzakció (ODBC) című cikkben talál.

CDatabase::CanUpdate

Hívja meg ezt a tagfüggvényt annak megállapításához, hogy az objektum engedélyezi-e a CDatabase frissítéseket.

BOOL CanUpdate() const;

Visszaadott érték

Nonzero, ha az objektum engedélyezi a CDatabase frissítéseket; ellenkező esetben 0, amely azt jelzi, hogy az objektum megnyitásakor CDatabase átadott TRUEbReadOnly, vagy maga az adatforrás írásvédett. Az adatforrás írásvédett, ha az ODBC API függvény SQLGetInfo hívása SQL_DATASOURCE_READ_ONLYyad vissza.

Megjegyzések

Nem minden illesztőprogram támogatja a frissítéseket.

CDatabase::CDatabase

Egy CDatabase objektumot hoz létre.

CDatabase();

Megjegyzések

Az objektum létrehozása után meg kell hívnia annak vagy Open tagfüggvényétOpenEx, hogy kapcsolatot létesítsen egy adott adatforrással.

Előfordulhat, hogy kényelmesen beágyazza az objektumot a CDatabase dokumentumosztályba.

Example

Ez a példa egy CDocument-származtatott osztály használatát szemléltetiCDatabase.

// This fragment is taken from the declaration for CMyDatabaseDoc
// CMyDatabaseDoc is derived from CDocument.
public:
// Declare a CDatabase embedded in the document
CDatabase m_dbCust;

 

// Initialize when needed
CDatabase *CMyDatabaseDoc::GetDatabase()
{
   // Connect the object to a data source
   if (!m_dbCust.IsOpen() && !m_dbCust.OpenEx(NULL))
      return NULL;

   return &m_dbCust;
}

CDatabase::Close

Hívja meg ezt a tagfüggvényt, ha le szeretne választani egy adatforrásról.

virtual void Close();

Megjegyzések

A tagfüggvény meghívása előtt be kell zárnia az CDatabase objektumhoz társított rekordhalmazokat. Mivel Close nem pusztítja el az CDatabase objektumot, újra felhasználhatja az objektumot úgy, hogy új kapcsolatot nyit ugyanahhoz az adatforráshoz vagy egy másik adatforráshoz.

Az adatbázist használó rekordhalmazok összes függőben lévő AddNew vagy Edit utasítása törlődik, és az összes függőben lévő tranzakció vissza lesz vonva. Az objektumtól CDatabase függő rekordhalmazok nem definiált állapotban maradnak.

Example

// Close the current connection
m_dbCust.Close();

// Perhaps connect the object to a
// different data source
m_dbCust.OpenEx(_T("DSN=MFC_ODBCTest;UID=JOES"));

CDatabase::CommitTrans

A tranzakciók végrehajtásakor hívja meg ezt a tagfüggvényt.

BOOL CommitTrans();

Visszaadott érték

Nem, ha a frissítések véglegesítése sikeresen megtörtént; egyéb esetben 0. Ha CommitTrans nem sikerül, az adatforrás állapota nincs meghatározva. Az állapot meghatározásához ellenőriznie kell az adatokat.

Megjegyzések

A tranzakciók egy olyan objektum , , , és tagfüggvényeinek CRecordset hívásából AddNewállnak, amelyek a BeginTrans tagfüggvény hívásával kezdődtek.UpdateDeleteEdit CommitTrans véglegesíti a tranzakciót. Alapértelmezés szerint a frissítéseket azonnal véglegesíteni kell; a hívás BeginTrans miatt a frissítések kötelezettségvállalása késleltetve lesz a hívásig CommitTrans .

Amíg meg nem hívja CommitTrans egy tranzakció befejezését, meghívhatja a Rollback tagfüggvényt, hogy megszakítsa a tranzakciót, és hagyja az adatforrást az eredeti állapotában. Új tranzakció indításához hívja BeginTrans meg újra.

A tranzakciókról további információt a Tranzakció (ODBC) című cikkben talál.

Example

Lásd a Tranzakció: Tranzakció végrehajtása rekordhalmazban (ODBC) című cikket.

CDatabase::ExecuteSQL

Hívja meg ezt a tagfüggvényt, ha közvetlenül kell végrehajtania egy SQL-parancsot.

void ExecuteSQL(LPCTSTR lpszSQL);

Paraméterek

lpszSQL
Mutasson egy érvényes SQL-parancsot tartalmazó null értékű sztringre. Átadhat egy CString.

Megjegyzések

Hozza létre a parancsot null értékű sztringként. ExecuteSQL nem ad vissza adatrekordokat. Ha rekordokon szeretne dolgozni, használjon inkább egy rekordhalmaz-objektumot.

Az adatforrások legtöbb parancsa rekordhalmaz-objektumokon keresztül történik, amelyek támogatják az adatok kiválasztására, az új rekordok beszúrására, a rekordok törlésére és a rekordok szerkesztésére szolgáló parancsokat. Az adatbázisosztályok azonban nem minden ODBC-funkciót támogatnak közvetlenül, ezért előfordulhat, hogy időnként közvetlen SQL-hívást kell kezdeményeznie.ExecuteSQL

Example

try
{
   m_dbCust.ExecuteSQL(
       _T("UPDATE Taxes ")
       _T("SET Rate = '36' ")
       _T("WHERE Name = 'Federal'"));
}
catch (CDBException *pe)
{
   // The error code is in pe->m_nRetCode
   pe->ReportError();
   pe->Delete();
}

CDatabase::GetBookmarkPersistence

Ennek a tagfüggvénynek a meghívásával meghatározhatja a rekordhalmaz-objektumok könyvjelzőinek bizonyos műveletek utáni megőrzését.

DWORD GetBookmarkPersistence() const;

Visszaadott érték

Bitmaszk, amely azonosítja azokat a műveleteket, amelyeken keresztül a könyvjelzők egy rekordhalmaz-objektumon maradnak. További részletekért lásd: Megjegyzések.

Megjegyzések

Ha például meghívja CRecordset::GetBookmark , majd meghívja CRecordset::Requery, előfordulhat, hogy a kapott GetBookmark könyvjelző már nem érvényes. A hívás CRecordset::SetBookmarkelőtt hívnia GetBookmarkPersistence kell.

Az alábbi táblázat azokat a bitmaszkértékeket sorolja fel, amelyek kombinálhatók a visszaadott értékhez GetBookmarkPersistence.

Bitmaszk értéke Könyvjelzők megőrzése
SQL_BP_CLOSE A könyvjelzők egy Requery művelet után érvényesek.
SQL_BP_DELETE A sor könyvjelzője az adott sor egy Delete művelete után érvényes.
SQL_BP_DROP A könyvjelzők egy Close művelet után érvényesek.
SQL_BP_SCROLL A könyvjelzők minden Move művelet után érvényesek. Ez egyszerűen azonosítja, hogy a könyvjelzők támogatottak-e a rekordhalmazban, amint azt a rendszer visszaadta CRecordset::CanBookmark.
SQL_BP_TRANSACTION A könyvjelzők a tranzakció véglegesítése vagy visszaállítása után érvényesek.
SQL_BP_UPDATE A sor könyvjelzője az adott sor egy Update művelete után érvényes.
SQL_BP_OTHER_HSTMT Az egyik rekordhalmaz-objektumhoz társított könyvjelzők egy második rekordhalmazra érvényesek.

Erről a visszatérési értékről további információt a Windows SDK ODBC API-függvényében SQLGetInfo talál. A könyvjelzőkkel kapcsolatos további információkért tekintse meg a Recordset: Bookmarks and Absolute Positions (ODBC) című cikket.

CDatabase::GetConnect

Hívja meg ezt a tagfüggvényt, hogy lekérje a hívás OpenEx során használt kapcsolati sztringet, vagy Open az objektumot adatforráshoz kapcsolta CDatabase .

const CString GetConnect() const;

Visszaadott érték

A constCString kapcsolati sztringet tartalmazó karakterlánc, ha OpenEx van Open meghívva, ellenkező esetben üres sztring.

Megjegyzések

Tekintse meg CDatabase::Open a kapcsolati sztring létrehozásának leírását.

CDatabase::GetCursorCommitBehavior

Hívja meg ezt a tagfüggvényt annak meghatározásához, hogy egy CommitTrans művelet hogyan befolyásolja a megnyitott rekordhalmaz-objektumok kurzorait.

int GetCursorCommitBehavior() const;

Visszaadott érték

A tranzakciók nyitott rekordhalmaz-objektumokra gyakorolt hatását jelző érték. További részletekért lásd: Megjegyzések.

Megjegyzések

Az alábbi táblázat a nyitott rekordhalmaz lehetséges visszatérési értékeit GetCursorCommitBehavior és a megfelelő hatást sorolja fel.

Visszaadott érték Effektus objektumokra CRecordset
SQL_CB_CLOSE A tranzakció véglegesítése után azonnal hívja CRecordset::Requery meg a hívást.
SQL_CB_DELETE A tranzakció véglegesítése után azonnal hívja CRecordset::Close meg a hívást.
SQL_CB_PRESERVE Folytassa a műveleteket a szokásos módon CRecordset .

Erről a visszatérési értékről további információt a Windows SDK ODBC API-függvényében SQLGetInfo talál. A tranzakciókról további információt a Tranzakció (ODBC) című cikkben talál.

CDatabase::GetCursorRollbackBehavior

Hívja meg ezt a tagfüggvényt annak meghatározásához, hogy egy Rollback művelet hogyan befolyásolja a megnyitott rekordhalmaz-objektumok kurzorait.

int GetCursorRollbackBehavior() const;

Visszaadott érték

A tranzakciók nyitott rekordhalmaz-objektumokra gyakorolt hatását jelző érték. További részletekért lásd: Megjegyzések.

Megjegyzések

Az alábbi táblázat a nyitott rekordhalmaz lehetséges visszatérési értékeit GetCursorRollbackBehavior és a megfelelő hatást sorolja fel.

Visszaadott érték Effektus objektumokra CRecordset
SQL_CB_CLOSE A tranzakció visszaállítását követően azonnal hívja CRecordset::Requery meg a hívást.
SQL_CB_DELETE A tranzakció visszaállítását követően azonnal hívja CRecordset::Close meg a hívást.
SQL_CB_PRESERVE Folytassa a műveleteket a szokásos módon CRecordset .

Erről a visszatérési értékről további információt a Windows SDK ODBC API-függvényében SQLGetInfo talál. A tranzakciókról további információt a Tranzakció (ODBC) című cikkben talál.

CDatabase::GetDatabaseName

Hívja meg ezt a tagfüggvényt a jelenleg csatlakoztatott adatbázis nevének lekéréséhez (feltéve, hogy az adatforrás egy "adatbázis" nevű nevű objektumot definiál).

CString GetDatabaseName() const;

Visszaadott érték

Ha CString az adatbázis neve sikeres, akkor üres CString.

Megjegyzések

Ez nem ugyanaz, mint a hívásban vagy hívásban OpenExOpen megadott adatforrásnév (DSN). A GetDatabaseName visszatérési érték az ODBC-től függ. Az adatbázisok általában táblák gyűjteményei. Ha ennek az entitásnak van neve, GetDatabaseName azt adja vissza.

Előfordulhat például, hogy meg szeretné jeleníteni ezt a nevet egy címsorban. Ha hiba történik a név ODBC-ből való lekérése közben, GetDatabaseName üres CStringértéket ad vissza.

CDatabase::IsOpen

Hívja meg ezt a tagfüggvényt annak megállapításához, hogy az CDatabase objektum jelenleg csatlakozik-e egy adatforráshoz.

BOOL IsOpen() const;

Visszaadott érték

Nonzero, ha az CDatabase objektum jelenleg csatlakoztatva van, ellenkező esetben 0.

CDatabase::m_hdbc

Nyilvános leírót tartalmaz egy ODBC-adatforrás-kapcsolathoz – egy "kapcsolati leíróhoz".

Megjegyzések

Általában nem kell közvetlenül hozzáférnie ehhez a tagváltozóhoz. Ehelyett a keretrendszer lefoglalja a leírót a híváskor OpenEx vagy Opena . A keretrendszer felszabadítja a leírót, amikor meghívja az delete operátort az CDatabase objektumon. Vegye figyelembe, hogy a Close tagfüggvény nem oldja fel a leírót.

Bizonyos körülmények között azonban előfordulhat, hogy közvetlenül kell használnia a fogópontot. Ha például az ODBC API-függvényeket közvetlenül kell meghívnia az osztály CDatabasehelyett, előfordulhat, hogy paraméterként egy kapcsolati leíróra van szüksége. Lásd az alábbi kód példáját.

Example

// Using m_hdbc for a direct ODBC API call.
// m_dbCust is the CDatabase object; m_hdbc is
// its HDBC member variable
nRetCode = ::SQLGetInfo(m_dbCust.m_hdbc, SQL_ODBC_SQL_CONFORMANCE,
                        &nValue, sizeof(nValue), &cbValue);

CDatabase::OnSetOptions

A keretrendszer meghívja ezt a tagfüggvényt, amikor közvetlenül végrehajt egy SQL-utasítást a ExecuteSQL tagfüggvénnyel.

virtual void OnSetOptions(HSTMT hstmt);

Paraméterek

hstmt
Az ODBC utasításkezelője, amelynél a beállítások be vannak állítva.

Megjegyzések

CRecordset::OnSetOptions ezt a tagfüggvényt is meghívja.

OnSetOptions beállítja a bejelentkezési időtúllépés értékét. Ha már volt korábbi hívás a és a SetQueryTimeout tagfüggvény felé, OnSetOptions az aktuális értékeket tükrözi, ellenkező esetben az alapértelmezett értékeket állítja be.

Megjegyzés:

Az MFC 4.2 OnSetOptions előtt állítsa a feldolgozási módot szkron vagy aszinkronra is. Az MFC 4.2-től kezdve minden művelet szinkronban van. Aszinkron művelet végrehajtásához közvetlen hívást kell kezdeményeznie az ODBC API-függvényhez SQLSetPos.

Az időtúllépési érték módosításához nem kell felülbírálnia OnSetOptions . Ehelyett a lekérdezés időtúllépési értékének testreszabásához hívja meg SetQueryTimeout a rekordhalmaz létrehozása előtt; OnSetOptions az új értéket fogja használni. A beállított értékek az összes rekordhalmazon vagy közvetlen SQL-híváson végzett későbbi műveletekre vonatkoznak.

Felülbírálás OnSetOptions , ha további beállításokat szeretne megadni. A felülbírálásnak meg kell hívnia az alaposztályt OnSetOptions az ODBC API-függvény SQLSetStmtOptionmeghívása előtt vagy után. Kövesse a keretrendszer alapértelmezett implementációjában OnSetOptionsbemutatott módszert.

CDatabase::Open

Hívja meg ezt a tagfüggvényt egy újonnan létrehozott CDatabase objektum inicializálásához.

virtual BOOL Open(
    LPCTSTR lpszDSN,
    BOOL bExclusive = FALSE,
    BOOL bReadOnly = FALSE,
    LPCTSTR lpszConnect = _T("ODBC;"),
    BOOL bUseCursorLib = TRUE);

Paraméterek

lpszDSN
Megadja az adatforrás nevét – az ODBC-ben az ODBC-rendszergazdai programon keresztül regisztrált nevet. Ha egy DSN-érték van megadva lpszConnect (a "DSN=<data-source>" formában), akkor nem szabad újra megadni a következőben lpszDSN: . Ebben az esetben lpszDSN a következőnek kell lennie NULL: . Ellenkező esetben átadhatja NULL , ha meg szeretné jeleníteni a felhasználót egy Adatforrás párbeszédpanelen, amelyben a felhasználó kiválaszthat egy adatforrást. További információ: Megjegyzések.

bExclusive
Az osztálytár ezen verziója nem támogatott. Jelenleg egy helyességi feltétel meghiúsul, ha ez a paraméter .TRUE Az adatforrás mindig megosztottként van megnyitva (nem kizárólagos).

bReadOnly
TRUE ha a kapcsolatot írásvédettként szeretné használni, és letiltja az adatforrás frissítéseit. Ezt az attribútumot minden függő rekordhalmaz örökli. Az alapértelmezett érték a FALSE.

lpszConnect
Megadja a kapcsolati sztringet. A kapcsolati sztring összefűzi az adatokat, beleértve az adatforrás nevét, az adatforrásra érvényes felhasználói azonosítót, egy felhasználói hitelesítési sztringet (jelszó, ha az adatforráshoz szükség van) és egyéb információkat. A teljes kapcsolati sztringet a sztringnek "ODBC;" előtaggal kell rendelkeznie (nagybetűvel vagy kisbetűvel). A "ODBC;" sztring azt jelzi, hogy a kapcsolat egy ODBC-adatforráshoz kapcsolódik. Ez a kompatibilitás felfelé mutat, ha az osztálytár jövőbeli verziói támogathatják a nem ODBC-adatforrásokat.

bUseCursorLib
TRUE ha azt szeretné, hogy az ODBC kurzortár DLL-je be legyen töltve. A kurzortár elfedi a mögöttes ODBC-illesztő bizonyos funkcióit, így hatékonyan megakadályozza a dinasztiák használatát (ha az illesztőprogram támogatja őket). A kurzortár betöltésekor csak statikus pillanatképek és csak előre mutató kurzorok támogatottak. Az alapértelmezett érték a TRUE. Ha közvetlenül CRecordset abból szeretne létrehozni egy rekordhalmaz-objektumot anélkül, hogy abból származik, ne töltse be a kurzortárat.

Visszaadott érték

Nonzero, ha a kapcsolat sikeresen létrejött; ellenkező esetben 0, ha a felhasználó a Mégse lehetőséget választja, amikor megjelenik egy párbeszédpanel, amely további kapcsolati információkat kér. Minden más esetben a keretrendszer kivételt jelez.

Megjegyzések

Az adatbázis-objektumot inicializálni kell, mielőtt rekordhalmaz-objektumot hozhat létre.

Megjegyzés:

OpenEx A tagfüggvény meghívása az adatforráshoz való csatlakozás és az adatbázis-objektum inicializálásának előnyben részesített módja.

Ha a hívás paraméterei Open nem tartalmaznak elegendő információt a kapcsolat létrehozásához, az ODBC-illesztő megnyitja a párbeszédpanelt a felhasználótól a szükséges információk beszerzéséhez. Amikor meghívja Opena kapcsolati sztringet, a rendszer privátan tárolja az CDatabase objektumban, lpszConnectés a GetConnect tagfüggvény meghívásával érhető el.

Ha szeretné, megnyithatja a saját párbeszédpanelt, mielőtt meghívja Open a felhasználótól érkező információk( például jelszó) lekéréséhez, majd hozzáadhatja ezeket az adatokat a megadott kapcsolati sztringhez Open. Vagy érdemes lehet mentenie a megadott kapcsolati sztringet, hogy újra felhasználhassa, amikor az alkalmazás legközelebb meghív Open egy CDatabase objektumot.

A kapcsolati sztringet használhatja a bejelentkezési engedélyezés több szintjén is (mindegyiket egy másik CDatabase objektumhoz), vagy más adatforrásspecifikus információkat is továbbíthat. A kapcsolati sztringekről további információt a Windows SDK 5. fejezetében talál.

Előfordulhat, hogy a kapcsolat túllépi az időkorlátot, ha például a DBMS-gazdagép nem érhető el. Ha a csatlakozási kísérlet meghiúsul, Open a rendszer egy CDBException.

Example

// m_dbCust is a CDatabase object embedded in a CDocument class

if (bDefault)
{
   // Connect the object to a data source (no password)
   // the ODBC connection dialog box will always remain hidden
   m_dbCust.Open(_T("MFC_ODBCTest"), FALSE, FALSE, _T("ODBC;UID=JOES"));
}
else
{
   // ...Or, query the user for all connection information
   m_dbCust.Open(NULL);
}

CDatabase::OpenEx

Hívja meg ezt a tagfüggvényt egy újonnan létrehozott CDatabase objektum inicializálásához.

virtual BOOL OpenEx(
    LPCTSTR lpszConnectString,
    DWORD dwOptions = 0);

Paraméterek

lpszConnectString
Egy ODBC kapcsolati sztringet ad meg. Ez magában foglalja az adatforrás nevét, valamint az egyéb opcionális információkat, például a felhasználói azonosítót és a jelszót. Ez lehet például "DSN=SQLServer_Source;UID=SA;PWD=abc123" egy lehetséges kapcsolati sztring. Vegye figyelembe, hogy ha ezt adja meg NULLlpszConnectString, az Adatforrás párbeszédpanelen a felhasználónak meg kell adnia egy adatforrást.

dwOptions
Bitmaszk, amely a következő értékek kombinációját adja meg. Az alapértelmezett érték 0, ami azt jelenti, hogy az adatbázis írási hozzáféréssel megosztva lesz megnyitva, az ODBC kurzortár DLL-je nem lesz betöltve, és az ODBC kapcsolat párbeszédpanelje csak akkor jelenik meg, ha nincs elegendő információ a kapcsolat létrehozásához.

  • CDatabase::openExclusive Az osztálytár ezen verziója nem támogatott. Az adatforrások mindig megosztottként nyílnak meg (nem kizárólagos). Jelenleg az állítás meghiúsul, ha megadja ezt a beállítást.

  • CDatabase::openReadOnly Nyissa meg az adatforrást írásvédettként.

  • CDatabase::useCursorLib Töltse be az ODBC-kurzortár DLL-ét. A kurzortár elfedi a mögöttes ODBC-illesztő bizonyos funkcióit, így hatékonyan megakadályozza a dinasztiák használatát (ha az illesztőprogram támogatja őket). A kurzortár betöltésekor csak statikus pillanatképek és csak előre mutató kurzorok támogatottak. Ha közvetlenül CRecordset abból szeretne létrehozni egy rekordhalmaz-objektumot anélkül, hogy abból származik, ne töltse be a kurzortárat.

  • CDatabase::noOdbcDialog Ne jelenítse meg az ODBC-kapcsolat párbeszédpanelt, függetlenül attól, hogy elegendő kapcsolati információ van-e megadva.

  • CDatabase::forceOdbcDialog Mindig jelenítse meg az ODBC-kapcsolat párbeszédpanelt.

Visszaadott érték

Nonzero, ha a kapcsolat sikeresen létrejött; ellenkező esetben 0, ha a felhasználó a Mégse lehetőséget választja, amikor megjelenik egy párbeszédpanel, amely további kapcsolati információkat kér. Minden más esetben a keretrendszer kivételt jelez.

Megjegyzések

Az adatbázis-objektumot inicializálni kell, mielőtt rekordhalmaz-objektumot hozhat létre.

Ha a lpszConnectString hívás paramétere OpenEx nem tartalmaz elegendő információt a kapcsolat létrehozásához, az ODBC-illesztő megnyitja a párbeszédpanelt a felhasználótól a szükséges információk lekéréséhez, feltéve, hogy nem adta meg vagy CDatabase::forceOdbcDialog nem adta meg CDatabase::noOdbcDialog a dwOptions paramétert. Amikor meghívja OpenExa kapcsolati sztringet, a rendszer privátan tárolja az CDatabase objektumban, lpszConnectStringés a GetConnect tagfüggvény meghívásával érhető el.

Ha szeretné, megnyithatja a saját párbeszédpanelt, mielőtt meghívja OpenEx a felhasználótól érkező információk( például jelszó) lekéréséhez, majd hozzáadhatja ezeket az adatokat a megadott kapcsolati sztringhez OpenEx. Vagy érdemes lehet mentenie a megadott kapcsolati sztringet, hogy újra felhasználhassa, amikor az alkalmazás legközelebb meghív OpenEx egy CDatabase objektumot.

A kapcsolati sztringet használhatja a bejelentkezési engedélyezés több szintjén is (mindegyiket egy másik CDatabase objektumhoz), vagy más adatforrásspecifikus információkat is továbbíthat. A kapcsolati sztringekről további információt az ODBC programozói referencia 6. fejezetében talál.

Előfordulhat, hogy a kapcsolat túllépi az időkorlátot, ha például a DBMS-gazdagép nem érhető el. Ha a csatlakozási kísérlet meghiúsul, OpenEx a rendszer egy CDBException.

Example

// m_dbCust is a CDatabase object embedded in a CDocument class.

// Connect the object to a read-only data source where
// the ODBC connection dialog box will always remain hidden
m_dbCust.OpenEx(_T("DSN=MFC_ODBCTest;UID=JOES"),
                CDatabase::openReadOnly | CDatabase::noOdbcDialog);

CDatabase::Rollback

Hívja meg ezt a tagfüggvényt a tranzakció során végrehajtott módosítások megfordításához.

BOOL Rollback();

Visszaadott érték

Nonzero, ha a tranzakció sikeresen vissza lett fordítva; egyéb esetben 0. Ha egy Rollback hívás meghiúsul, az adatforrás és a tranzakció állapota nincs meghatározva. Ha Rollback 0 értéket ad vissza, ellenőrizze az adatforrás állapotát.

Megjegyzések

Edit DeleteAz CRecordsetAddNewutolsó BeginTrans óta végrehajtott összes hívás és Update hívás vissza lesz állítva a hívás időpontjában létező állapotba.

A hívás Rollbackután a tranzakció véget ér, és újra meg kell hívnia BeginTrans egy másik tranzakciót. A hívás előtt aktuális rekord ismét az aktuális rekord lesz a következő BeginTrans után Rollback.

A visszaállítás után a visszaállítás előtt aktuális rekord továbbra is aktuális marad. A rekordhalmaz állapotával és az adatforrással kapcsolatos részletekért tekintse meg a Tranzakció (ODBC) című cikket.

Example

Lásd a Tranzakció: Tranzakció végrehajtása rekordhalmazban (ODBC) című cikket.

CDatabase::SetLoginTimeout

Hívja meg ezt a tagfüggvényt – hívás OpenEx előtt vagy Open – az adatforrás-kapcsolat túllépése előtt engedélyezett alapértelmezett másodpercek számának felülbírálásához.

void SetLoginTimeout(DWORD dwSeconds);

Paraméterek

dwSeconds
A kapcsolati kísérletek időkorlátjának túllépése előtt engedélyezendő másodpercek száma.

Megjegyzések

Egy kapcsolati kísérlet időtúllépést eredményezhet, ha például a DBMS nem érhető el. Hívás SetLoginTimeout a nem inicializált CDatabase objektum létrehozása után, de a hívás vagy Opena hívás OpenEx előtt.

A bejelentkezési időtúllépések alapértelmezett értéke 15 másodperc. Nem minden adatforrás támogatja a bejelentkezési időtúllépési érték megadását. Ha az adatforrás nem támogatja az időtúllépést, nyomkövetési kimenetet kap, de kivételt nem. A 0 érték "végtelen" értéket jelent.

CDatabase::SetQueryTimeout

Hívja meg ezt a tagfüggvényt, hogy felülbírálja az alapértelmezett másodpercszámot, hogy a csatlakoztatott adatforráson végzett további műveletek túllépjenek időtúllépést.

void SetQueryTimeout(DWORD dwSeconds);

Paraméterek

dwSeconds
A lekérdezési kísérletek időkorlátjának túllépése előtt engedélyezendő másodpercek száma.

Megjegyzések

Egy művelet időtúllépést eredményezhet a hálózati hozzáférési problémák, a lekérdezések túlzott feldolgozási ideje stb. miatt. Ha módosítani szeretné a lekérdezés időtúllépési értékét, hívja SetQueryTimeout fel a rekordhalmaz megnyitása előtt vagy Delete a rekordhalmaz tagfüggvényeinek Update meghívása AddNewelőtt. A beállítás az összes további Open, AddNewés UpdateDelete az objektumhoz társított rekordhalmazok hívására CDatabase is hatással van. A rekordhalmaz lekérdezési időtúllépési értékének megnyitása után történő módosítása nem módosítja a rekordhalmaz értékét. A későbbi Move műveletek például nem használják az új értéket.

A lekérdezési időtúllépések alapértelmezett értéke 15 másodperc. Nem minden adatforrás támogatja a lekérdezés időtúllépési értékének beállítását. Ha a lekérdezés időtúllépési értékét 0 értékre állítja be, nem történik időtúllépés; az adatforrással folytatott kommunikáció leállhat. Ez a viselkedés hasznos lehet a fejlesztés során. Ha az adatforrás nem támogatja az időtúllépést, nyomkövetési kimenetet kap, de kivételt nem.

Lásd még

CObject osztály
hierarchiadiagram
CRecordset osztály