Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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
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::openExclusiveAz 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::openReadOnlyNyissa meg az adatforrást írásvédettként.CDatabase::useCursorLibTö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ülCRecordsetabból szeretne létrehozni egy rekordhalmaz-objektumot anélkül, hogy abból származik, ne töltse be a kurzortárat.CDatabase::noOdbcDialogNe jelenítse meg az ODBC-kapcsolat párbeszédpanelt, függetlenül attól, hogy elegendő kapcsolati információ van-e megadva.CDatabase::forceOdbcDialogMindig 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.