Aracılığıyla paylaş


CDatabase Sınıf

Veri kaynağı üzerinde çalışabileceğiniz bir veri kaynağı bağlantısını temsil eder.

Sözdizimi

class CDatabase : public CObject

Üyeler

Ortak Oluşturucular

Veri Akışı Adı Açıklama
CDatabase::CDatabase Bir CDatabase nesne oluşturur. nesnesini veya Opençağırarak OpenEx başlatmanız gerekir.

Genel Yöntemler

Veri Akışı Adı Açıklama
CDatabase::BeginTrans Bağlı veri kaynağında sınıfın , , EditDeleteve Update üye işlevlerine AddNewCRecordset yönelik bir dizi geri çevrilebilir çağrı olan bir "işlem" başlatır. Veri kaynağının herhangi bir etkiye sahip olması için BeginTrans işlemleri desteklemesi gerekir.
CDatabase::BindParameters çağırmadan CDatabase::ExecuteSQLönce parametreleri bağlamanıza olanak tanır.
CDatabase::Cancel İkinci iş parçacığından zaman uyumsuz bir işlemi veya işlemi iptal eder.
CDatabase::CanTransact Veri kaynağı işlemleri destekliyorsa sıfır olmayan değerini döndürür.
CDatabase::CanUpdate Nesne güncelleştirilebilirse CDatabase sıfır olmayan döndürür (salt okunur değil).
CDatabase::Close Veri kaynağı bağlantısını kapatır.
CDatabase::CommitTrans tarafından BeginTransbaşlatılan bir işlemi tamamlar. İşlemdeki veri kaynağını değiştiren komutlar gerçekleştirilir.
CDatabase::ExecuteSQL BIR SQL deyimi yürütür. Hiçbir veri kaydı döndürülmüyor.
CDatabase::GetBookmarkPersistence Yer işaretlerinin kayıt kümesi nesnelerinde kalıcı olduğu işlemleri tanımlar.
CDatabase::GetConnect Nesneyi bir veri kaynağına bağlamak CDatabase için kullanılan ODBC bağlantı dizesi döndürür.
CDatabase::GetCursorCommitBehavior Açık bir kayıt kümesi nesnesi üzerinde işlem yürütmenin etkisini tanımlar.
CDatabase::GetCursorRollbackBehavior Bir işlemi açık bir kayıt kümesi nesnesi üzerinde geri döndürmenin etkisini tanımlar.
CDatabase::GetDatabaseName Şu anda kullanımda olan veritabanının adını döndürür.
CDatabase::IsOpen Nesne şu anda bir veri kaynağına bağlıysa CDatabase sıfır olmayan döndürür.
CDatabase::OnSetOptions Standart bağlantı seçeneklerini ayarlamak için çerçeve tarafından çağrılır. Varsayılan uygulama sorgu zaman aşımı değerini ayarlar. çağrısı SetQueryTimeoutyaparak bu seçenekleri önceden ayarlayabilirsiniz.
CDatabase::Open Bir veri kaynağına (ODBC sürücüsü aracılığıyla) bağlantı kurar.
CDatabase::OpenEx Bir veri kaynağına (ODBC sürücüsü aracılığıyla) bağlantı kurar.
CDatabase::Rollback Geçerli işlem sırasında yapılan değişiklikleri tersine çevirir. Veri kaynağı, çağrıda BeginTrans tanımlandığı gibi, değişmeden önceki durumuna döner.
CDatabase::SetLoginTimeout Bir veri kaynağı bağlantı girişiminin zaman aşımına uğradıktan sonra kaç saniye sonra çalışacağını ayarlar.
CDatabase::SetQueryTimeout Veritabanı sorgu işlemlerinin zaman aşımına uğradıktan sonraki saniye sayısını ayarlar. Sonraki tüm kayıt kümesini Open, AddNew, Editve Delete çağrılarını etkiler.

Ortak Veri Üyeleri

Veri Akışı Adı Açıklama
CDatabase::m_hdbc Veri kaynağına Veritabanı Bağlantısı (ODBC) bağlantı tutamacını açın. HDBC yazın.

Açıklamalar

Veri kaynağı, bazı veritabanı yönetim sistemleri (DBMS) tarafından barındırılan belirli bir veri örneğidir. Örnek olarak Microsoft SQL Server, Microsoft Access, Borland dBASE ve xBASE verilebilir. Uygulamanızda bir kerede bir veya daha fazla CDatabase nesne etkin olabilir.

Not

Açık Veritabanı Bağlantısı (ODBC) sınıfları yerine Veri Erişim Nesneleri (DAO) sınıfları ile çalışıyorsanız, bunun yerine sınıfı CDaoDatabase kullanın. Daha fazla bilgi için Genel Bakış: Veritabanı Programlama makalesine bakın.

kullanmak CDatabaseiçin bir CDatabase nesnesi oluşturur ve üye işlevini çağırır OpenEx . Bu işlem bir bağlantı açar. Daha sonra CRecordset bağlı veri kaynağında çalışacak nesneler oluşturduğunuzda, kayıt kümesi oluşturucusunun nesnenize bir işaretçi geçirmesini sağlayın CDatabase . Bağlantıyı kullanmayı bitirdiğinizde üye işlevini çağırın Close ve nesneyi yok edin CDatabase . Close daha önce kapatmadığınız tüm kayıt kümelerini kapatır.

hakkında CDatabasedaha fazla bilgi için Veri Kaynağı (ODBC) ve Genel Bakış: Veritabanı Programlama makalelerine bakın.

Devralma Hiyerarşisi

CObject

CDatabase

Gereksinimler

Üstbilgi: afxdb.h

CDatabase::BeginTrans

Bağlı veri kaynağıyla işlem başlatmak için bu üye işlevini çağırın.

BOOL BeginTrans();

Dönüş Değeri

Çağrı başarılı olursa ve değişiklikler yalnızca el ile işlenirse sıfır olmayan; aksi takdirde 0.

Açıklamalar

İşlem, bir nesnenin , , EditDeleteve Update üye işlevlerine yapılan AddNewbir CRecordset veya daha fazla çağrıdan oluşur. Bir işleme başlamadan önce nesnenin CDatabase veya Open üye işlevini çağırarak OpenEx veri kaynağına zaten bağlanmış olması gerekir. İşlemi sonlandırmak için, CommitTrans veri kaynağındaki tüm değişiklikleri kabul etmek (ve gerçekleştirmek) veya tüm işlemi durdurmak için çağrısı Rollback yapın. İşlemle ilgili kayıt kümelerini açtıktan sonra ve gerçek güncelleştirme işlemlerine mümkün olduğunca yakın bir şekilde çağrısı BeginTrans yapın.

Dikkat

ODBC sürücünüze bağlı olarak, çağırmadan BeginTrans önce bir kayıt kümesini açmak, çağrılırken Rollbacksorunlara neden olabilir. Kullandığınız belirli sürücüyü denetlemeniz gerekir. Örneğin, Microsoft ODBC Masaüstü Sürücü Paketi 3.0'da bulunan Microsoft Access sürücüsünü kullanırken, Jet veritabanı altyapısının açık bir imleç içeren herhangi bir veritabanında işlem başlatmama gereksinimini dikkate almalısınız. MFC veritabanı sınıflarında açık imleç, açık CRecordset bir nesne anlamına gelir. Daha fazla bilgi için bkz . Teknik Not 68.

BeginTrans , istenen eşzamanlılığa ve veri kaynağının özelliklerine bağlı olarak sunucudaki veri kayıtlarını da kilitler. Verileri kilitleme hakkında bilgi için Kayıt Kümesi: Kayıtları Kilitleme (ODBC) makalesine bakın.

Kullanıcı tanımlı işlemler İşlem (ODBC) makalesinde açıklanmıştır.

BeginTrans işlem sırasının geri alınabileceği durumu (ters çevrilmiş) oluşturur. Geri alma işlemleri için yeni bir durum oluşturmak için, geçerli işlemleri işleyin ve yeniden arayın BeginTrans .

Dikkat

Arama BeginTrans yapmadan yeniden çağırmak CommitTrans veya Rollback bir hatadır.

Sürücünüzün CanTransact belirli bir veritabanı için işlemleri destekleyip desteklemediğini belirlemek için üye işlevini çağırın. İmleç koruma desteğini belirlemek için ve GetCursorRollbackBehavior öğesini de çağırmalısınızGetCursorCommitBehavior.

İşlemler hakkında daha fazla bilgi için İşlem (ODBC) makalesine bakın.

Örnek

İşlem: Kayıt Kümesinde İşlem Gerçekleştirme (ODBC) makalesine bakın.

CDatabase::BindParameters

çağırmadan CDatabase::ExecuteSQLönce parametreleri bağlamanız gerektiğinde geçersiz kılınBindParameters.

virtual void BindParameters(HSTMT hstmt);

Parametreler

hstmt
Parametrelerini bağlamak istediğiniz ODBC deyimi tanıtıcısı.

Açıklamalar

Bu yaklaşım, saklı yordamdan sonuç kümesine ihtiyacınız olmadığında kullanışlıdır.

Geçersiz kılmanızda, parametreleri bağlamak için ve ilgili ODBC işlevlerini çağırın SQLBindParameters . MFC, çağrısınızdan ExecuteSQLönce geçersiz kılmanızı çağırır. çağrısı SQLPrepareyapmanız gerekmez; ExecuteSQL SQLExecDirect çağrısı yapar ve yalnızca bir kez kullanılan öğesini yok eder hstmt.

CDatabase::Cancel

Veri kaynağının devam eden zaman uyumsuz bir işlemi veya ikinci iş parçacığından bir işlemi iptal etmelerini istemek için bu üye işlevini çağırın.

void Cancel();

Açıklamalar

MFC ODBC sınıflarının artık zaman uyumsuz işleme kullanmadığını unutmayın; zaman uyumsuz bir işlem gerçekleştirmek için ODBC API işlevini SQLSetConnectOptiondoğrudan çağırmanız gerekir. Daha fazla bilgi için bkz . Zaman Uyumsuz Yürütme.

CDatabase::CanTransact

Veritabanının işlemlere izin verip vermediğini belirlemek için bu üye işlevini çağırın.

BOOL CanTransact() const;

Dönüş Değeri

Bu CDatabase nesneyi kullanan kayıt kümeleri işlemlere izin verirse sıfır olmayan; aksi takdirde 0.

Açıklamalar

İşlemler hakkında bilgi için İşlem (ODBC) makalesine bakın.

CDatabase::CanUpdate

Nesnenin güncelleştirmelere izin verip vermediğini belirlemek için bu üye işlevini çağırın CDatabase .

BOOL CanUpdate() const;

Dönüş Değeri

Nesne güncelleştirmelere CDatabase izin veriyorsa sıfır olmayan; aksi takdirde nesneyi açtığınızda CDatabase geçiş TRUE bReadOnly yaptığınız veya veri kaynağının salt okunur olduğunu belirten 0. için SQL_DATASOURCE_READ_ONLY ODBC API işlevine SQLGetInfo yapılan bir çağrı döndürürse yveri kaynağı salt okunur olur.

Açıklamalar

Tüm sürücüler güncelleştirmeleri desteklemez.

CDatabase::CDatabase

Bir CDatabase nesne oluşturur.

CDatabase();

Açıklamalar

Nesneyi oluşturduktan sonra, belirtilen bir veri kaynağına bağlantı kurmak için veya Open üye işlevini çağırmanız OpenEx gerekir.

Nesneyi belge sınıfınıza eklemeyi CDatabase uygun bulabilirsiniz.

Örnek

Bu örnekte , -derived sınıfında kullanımı CDatabase CDocumentgösterilmektedir.

// 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

Veri kaynağı bağlantısını kesmek istiyorsanız bu üye işlevini çağırabilirsiniz.

virtual void Close();

Açıklamalar

Bu üye işlevini çağırmadan önce nesneyle CDatabase ilişkili kayıt kümelerini kapatmanız gerekir. Nesneyi Close yok CDatabase etmediğinden, aynı veri kaynağına veya farklı bir veri kaynağına yeni bir bağlantı açarak nesneyi yeniden kullanabilirsiniz.

Veritabanını kullanan tüm bekleyen AddNew veya Edit kayıt kümelerinin deyimleri iptal edilir ve bekleyen tüm işlemler geri alınır. Nesneye CDatabase bağımlı tüm kayıt kümeleri tanımsız durumda bırakılır.

Örnek

// 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

İşlemleri tamamladıktan sonra bu üye işlevini çağır.

BOOL CommitTrans();

Dönüş Değeri

Güncelleştirmeler başarıyla işlendiyse sıfır olmayan; aksi takdirde 0. Başarısız CommitTrans olursa, veri kaynağının durumu tanımlanmamış olur. Durumunu belirlemek için verileri denetlemeniz gerekir.

Açıklamalar

İşlem, üye işlevine AddNewyapılan çağrıyla başlayan bir CRecordset nesnenin , Edit, Deleteve Update üye işlevlerine BeginTrans yönelik bir dizi çağrıdan oluşur. CommitTrans işlemi yürütmektedir. Varsayılan olarak, güncelleştirmeler hemen işlenir; çağrısı BeginTrans , güncelleştirmelerin taahhüdünün çağrılana kadar CommitTrans geciktirilmesine neden olur.

Bir işlemi sonlandırmak için çağırana CommitTrans kadar, işlemi durdurmak ve veri kaynağını özgün durumunda bırakmak için üye işlevini çağırabilirsiniz Rollback . Yeni bir işlem başlatmak için yeniden arayın BeginTrans .

İşlemler hakkında daha fazla bilgi için İşlem (ODBC) makalesine bakın.

Örnek

İşlem: Kayıt Kümesinde İşlem Gerçekleştirme (ODBC) makalesine bakın.

CDatabase::ExecuteSQL

Bir SQL komutunu doğrudan yürütmeniz gerektiğinde bu üye işlevini çağırabilirsiniz.

void ExecuteSQL(LPCTSTR lpszSQL);

Parametreler

lpszSQL
Yürütülecek geçerli bir SQL komutu içeren null ile sonlandırılan dizenin işaretçisi. bir CStringgeçirebilirsiniz.

Açıklamalar

Komutu null ile sonlandırılan bir dize olarak oluşturun. ExecuteSQL veri kayıtlarını döndürmez. Kayıtlarda çalışmak istiyorsanız, bunun yerine bir kayıt kümesi nesnesi kullanın.

Veri kaynağına yönelik komutlarınızın çoğu, veri seçme, yeni kayıt ekleme, kayıtları silme ve kayıtları düzenleme komutlarını destekleyen kayıt kümesi nesneleri aracılığıyla verilir. Ancak, tüm ODBC işlevleri veritabanı sınıfları tarafından doğrudan desteklenmez, bu nedenle bazen ile ExecuteSQLdoğrudan SQL çağrısı yapmanız gerekebilir.

Örnek

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

Belirli işlemlerden sonra kayıt kümesi nesnesinde yer işaretlerinin kalıcılığını belirlemek için bu üye işlevini çağırın.

DWORD GetBookmarkPersistence() const;

Dönüş Değeri

Yer işaretlerinin kayıt kümesi nesnesinde kalıcı olduğu işlemleri tanımlayan bit maskesi. Ayrıntılar için bkz. Açıklamalar.

Açıklamalar

Örneğin, öğesini çağırıp CRecordset::GetBookmark çağırırsanız CRecordset::Requery, içinden GetBookmark alınan yer işareti artık geçerli olmayabilir. çağrısına başlamadan önce aramanız GetBookmarkPersistence CRecordset::SetBookmarkgerekir.

Aşağıdaki tabloda değerinin dönüş değeri için birleştirilebilen bit maskesi değerleri GetBookmarkPersistencelistelenir.

Bit maskesi değeri Yer işareti kalıcılığı
SQL_BP_CLOSE Yer işaretleri bir Requery işlemden sonra geçerli olur.
SQL_BP_DELETE Satırın yer işareti, bu satırdaki bir Delete işlemden sonra geçerli olur.
SQL_BP_DROP Yer işaretleri bir Close işlemden sonra geçerli olur.
SQL_BP_SCROLL Yer işaretleri herhangi bir Move işlemden sonra geçerlidir. Bu yalnızca tarafından döndürülen CRecordset::CanBookmarkkayıt kümesinde yer işaretlerinin desteklenip desteklenmediğini tanımlar.
SQL_BP_TRANSACTION Yer işaretleri, bir işlem işlendikten veya geri alındıktan sonra geçerlidir.
SQL_BP_UPDATE Satırın yer işareti, bu satırdaki bir Update işlemden sonra geçerli olur.
SQL_BP_OTHER_HSTMT Bir kayıt kümesi nesnesiyle ilişkilendirilmiş yer işaretleri ikinci kayıt kümesinde geçerlidir.

Bu dönüş değeri hakkında daha fazla bilgi için Bkz. Windows SDK'sında ODBC API işlevi SQLGetInfo . Yer işaretleri hakkında daha fazla bilgi için Kayıt Kümesi: Yer İşaretleri ve Mutlak Konumlar (ODBC) makalesine bakın.

CDatabase::GetConnect

Nesnesine bir veri kaynağına bağlanan veya Open çağrısı sırasında kullanılan bağlantı dizesi almak için OpenEx bu üye işlevini çağırınCDatabase.

const CString GetConnect() const;

Dönüş Değeri

constCString çağrılıp çağrılmadığını OpenEx Open içeren bağlantı dizesi; aksi takdirde boş bir dize.

Açıklamalar

bağlantı dizesi nasıl oluşturulduğuna ilişkin bir açıklama için bkzCDatabase::Open.

CDatabase::GetCursorCommitBehavior

Bir CommitTrans işlemin açık kayıt kümesi nesnelerindeki imleçleri nasıl etkilediğini belirlemek için bu üye işlevini çağır.

int GetCursorCommitBehavior() const;

Dönüş Değeri

İşlemlerin açık kayıt kümesi nesneleri üzerindeki etkisini gösteren değer. Ayrıntılar için bkz. Açıklamalar.

Açıklamalar

Aşağıdaki tabloda, için olası dönüş değerleri GetCursorCommitBehavior ve açık kayıt kümesi üzerindeki ilgili etki listelenir.

Dönüş değeri Nesneler üzerindeki CRecordset etkisi
SQL_CB_CLOSE İşlem işlemesinin hemen ardından çağrısı CRecordset::Requery yapın.
SQL_CB_DELETE İşlem işlemesinin hemen ardından çağrısı CRecordset::Close yapın.
SQL_CB_PRESERVE İşlemlerle CRecordset normal şekilde devam edin.

Bu dönüş değeri hakkında daha fazla bilgi için Bkz. Windows SDK'sında ODBC API işlevi SQLGetInfo . İşlemler hakkında daha fazla bilgi için İşlem (ODBC) makalesine bakın.

CDatabase::GetCursorRollbackBehavior

Bir Rollback işlemin açık kayıt kümesi nesnelerindeki imleçleri nasıl etkilediğini belirlemek için bu üye işlevini çağır.

int GetCursorRollbackBehavior() const;

Dönüş Değeri

İşlemlerin açık kayıt kümesi nesneleri üzerindeki etkisini gösteren değer. Ayrıntılar için bkz. Açıklamalar.

Açıklamalar

Aşağıdaki tabloda, için olası dönüş değerleri GetCursorRollbackBehavior ve açık kayıt kümesi üzerindeki ilgili etki listelenir.

Dönüş değeri Nesneler üzerindeki CRecordset etkisi
SQL_CB_CLOSE İşlem geri alma işleminin hemen ardından çağrısı CRecordset::Requery yapın.
SQL_CB_DELETE İşlem geri alma işleminin hemen ardından çağrısı CRecordset::Close yapın.
SQL_CB_PRESERVE İşlemlerle CRecordset normal şekilde devam edin.

Bu dönüş değeri hakkında daha fazla bilgi için Bkz. Windows SDK'sında ODBC API işlevi SQLGetInfo . İşlemler hakkında daha fazla bilgi için İşlem (ODBC) makalesine bakın.

CDatabase::GetDatabaseName

Şu anda bağlı olan veritabanının adını almak için bu üye işlevini çağırın (veri kaynağının "database" adlı adlandırılmış bir nesne tanımlaması koşuluyla).

CString GetDatabaseName() const;

Dönüş Değeri

CString Başarılı olursa veritabanı adını içeren, aksi takdirde boş CStringbir .

Açıklamalar

Bu, veya Open çağrısında OpenEx belirtilen veri kaynağı adıyla (DSN) aynı değildir. Nelerin GetDatabaseName döndürüldüğü ODBC'ye bağlıdır. Genel olarak, veritabanı bir tablo koleksiyonudur. Bu varlığın adı varsa, GetDatabaseName döndürür.

Örneğin, bu adı bir başlıkta görüntülemek isteyebilirsiniz. ODBC'den ad alınırken bir hata oluşursa, GetDatabaseName boş CStringbir döndürür.

CDatabase::IsOpen

Nesnenin CDatabase şu anda bir veri kaynağına bağlı olup olmadığını belirlemek için bu üye işlevini çağırın.

BOOL IsOpen() const;

Dönüş Değeri

Nesne şu anda bağlıysa CDatabase sıfır olmayan; aksi takdirde 0.

CDatabase::m_hdbc

ODBC veri kaynağı bağlantısı için ortak tanıtıcı içerir— "bağlantı tutamacı."

Açıklamalar

Normalde, bu üye değişkenine doğrudan erişmeniz gerekmez. Bunun yerine, veya Opençağırdığınızda OpenEx çerçeve tanıtıcıyı ayırır. nesnesinde işlecini çağırdığınızda çerçeve tanıtıcıyı delete serbest bırakıyor CDatabase . Üye işlevinin Close tanıtıcıyı serbest bırakmadığını unutmayın.

Ancak bazı durumlarda tutamacı doğrudan kullanmanız gerekebilir. Örneğin, sınıfı CDatabaseyerine doğrudan ODBC API işlevlerini çağırmanız gerekiyorsa, parametre olarak geçirmek için bir bağlantı tutamacını kullanmanız gerekebilir. Aşağıdaki kod örneğine bakın.

Örnek

// 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

Çerçeve, üye işleviyle ExecuteSQL bir SQL deyimini doğrudan yürütürken bu üye işlevini çağırır.

virtual void OnSetOptions(HSTMT hstmt);

Parametreler

hstmt
Seçeneklerin ayarlandığı ODBC deyimi tanıtıcısı.

Açıklamalar

CRecordset::OnSetOptions ayrıca bu üye işlevini çağırır.

OnSetOptions oturum açma zaman aşımı değerini ayarlar. ve üye işlevine SetQueryTimeout daha önce çağrılar yapılmışsa geçerli OnSetOptions değerleri yansıtır; aksi takdirde varsayılan değerleri ayarlar.

Not

MFC 4.2'nin öncesinde işleme OnSetOptions modunu da snychronous veya asynchronous olarak ayarlayın. MFC 4.2 ile başlayarak tüm işlemler zaman uyumlu olur. Zaman uyumsuz bir işlem gerçekleştirmek için ODBC API işlevine SQLSetPosdoğrudan çağrı yapmanız gerekir.

Zaman aşımı değerini değiştirmek için geçersiz kılmanız OnSetOptions gerekmez. Bunun yerine, sorgu zaman aşımı değerini özelleştirmek için kayıt kümesi oluşturmadan önce çağrısı SetQueryTimeout yapın; OnSetOptions yeni değeri kullanır. Ayarlanan değerler tüm kayıt kümelerinde veya doğrudan SQL çağrılarında sonraki işlemler için geçerlidir.

Ek seçenekler ayarlamak istiyorsanız geçersiz kılın OnSetOptions . Geçersiz kılmanız, ODBC API işlevini SQLSetStmtOptionçağırmadan önce veya sonra temel sınıfı OnSetOptions çağırmalıdır. Çerçevenin varsayılan uygulaması OnSetOptionsolan uygulamasında gösterilen yöntemi izleyin.

CDatabase::Open

Yeni bir nesne başlatmak için bu üye işlevini çağır.CDatabase

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

Parametreler

lpszDSN
Odbc Yöneticisi programı aracılığıyla ODBC'ye kaydedilmiş bir veri kaynağı adı belirtir. içinde bir DSN değeri belirtilirse lpszConnect ("DSN=<data-source>" biçiminde), içinde lpszDSNyeniden belirtilmemelidir. Bu durumda, lpszDSN olmalıdır NULL. Aksi takdirde, kullanıcıya veri kaynağı seçebileceği bir Veri Kaynağı iletişim kutusu sunmak istiyorsanız geçirebilirsiniz NULL . Daha fazla bilgi için bkz. Açıklamalar.

bExclusive
Sınıf kitaplığının bu sürümünde desteklenmez. Şu anda, bu parametre ise TRUEonay başarısız olur. Veri kaynağı her zaman paylaşılan olarak açılır (özel değil).

bReadOnly
TRUE bağlantının salt okunur olmasını ve veri kaynağı güncelleştirmelerini yasaklamasını planlıyorsanız. Tüm bağımlı kayıt kümeleri bu özniteliği devralır. Varsayılan değer şudur: FALSE.

lpszConnect
bir bağlantı dizesi belirtir. bağlantı dizesi, büyük olasılıkla veri kaynağı adı, veri kaynağında geçerli bir kullanıcı kimliği, kullanıcı kimlik doğrulama dizesi (veri kaynağı gerekiyorsa parola) ve diğer bilgiler de dahil olmak üzere bilgileri birleştirir. Tüm bağlantı dizesi dizeye "ODBC;" (büyük veya küçük harf) eklenmelidir. Dize "ODBC;" , bağlantının bir ODBC veri kaynağına olduğunu belirtmek için kullanılır; bu, sınıf kitaplığının gelecekteki sürümleri ODBC olmayan veri kaynaklarını destekleyebileceğinden yukarı doğru uyumluluk içindir.

bUseCursorLib
TRUE ODBC İmleç Kitaplığı DLL'sinin yüklenmesini istiyorsanız. İmleç kitaplığı temel ODBC sürücüsünün bazı işlevlerini maskeleyerek dinamik kümelerin kullanımını etkili bir şekilde engeller (sürücü bunları destekliyorsa). İmleç kitaplığı yüklendiğinde desteklenen imleçler yalnızca statik anlık görüntüler ve yalnızca ileri imleçlerdir. Varsayılan değer şudur: TRUE. Kayıt kümesi nesnesini doğrudan öğesinden CRecordset türetmeden oluşturmayı planlıyorsanız, imleç kitaplığını yüklememelisiniz.

Dönüş Değeri

Bağlantı başarıyla yapılırsa sıfır olmayan; aksi takdirde, kullanıcı daha fazla bağlantı bilgisi isteyen bir iletişim kutusu sunulduğunda İptal'i seçerse 0. Diğer tüm durumlarda, çerçeve bir özel durum oluşturur.

Açıklamalar

Bir kayıt kümesi nesnesi oluşturmak için kullanabilmeniz için önce veritabanı nesnenizin başlatılması gerekir.

Not

OpenEx Üye işlevini çağırmak, bir veri kaynağına bağlanmanın ve veritabanı nesnenizi başlatmanın tercih edilen yoludur.

Çağrınızdaki Open parametreler bağlantı oluşturmak için yeterli bilgi içermiyorsa, ODBC sürücüsü kullanıcıdan gerekli bilgileri almak için bir iletişim kutusu açar. çağırdığınızdaOpen, bağlantı dizesi, lpszConnectnesnesinde CDatabase özel olarak depolanır ve üye işlevi çağrılarak GetConnect kullanılabilir.

İsterseniz, kullanıcıdan parola gibi bilgileri almak için aramadan Open önce kendi iletişim kutunuzu açabilir ve ardından bu bilgileri geçirdiğiniz Openbağlantı dizesi ekleyebilirsiniz. Öte yandan, geçirdiğiniz bağlantı dizesi kaydetmek isteyebilirsiniz; böylece uygulamanız bir nesne üzerinde bir CDatabase sonraki çağrıda Open yeniden kullanabilirsiniz.

Bağlantı dizesi birden çok oturum açma yetkilendirme düzeyi (her biri farklı CDatabase bir nesne için) için veya veri kaynağına özgü diğer bilgileri iletmek için de kullanabilirsiniz. bağlantı dizesi hakkında daha fazla bilgi için bkz. Windows SDK'sında 5. Bölüm.

Örneğin DBMS ana bilgisayarı kullanılamıyorsa bağlantı girişimi zaman aşımına uğrabilir. Bağlantı girişimi başarısız olursa, Open bir CDBExceptionoluşturur.

Örnek

// 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

Yeni bir nesne başlatmak için bu üye işlevini çağır.CDatabase

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

Parametreler

lpszConnectString
ODBC bağlantı dizesi belirtir. Buna veri kaynağı adının yanı sıra kullanıcı kimliği ve parola gibi diğer isteğe bağlı bilgiler dahildir. Örneğin, "DSN=SQLServer_Source;UID=SA;PWD=abc123" olası bir bağlantı dizesi. için lpszConnectStringgeçirirsenizNULL, bir Veri Kaynağı iletişim kutusunun kullanıcıdan bir veri kaynağı seçmesini isteyeceğini unutmayın.

dwOptions
Aşağıdaki değerlerin bir bileşimini belirten bit maskesi. Varsayılan değer 0'dır; başka bir deyişle veritabanı yazma erişimiyle paylaşılan olarak açılır, ODBC İmleç Kitaplığı DLL'i yüklenmez ve ODBC bağlantısı iletişim kutusu yalnızca bağlantıyı yapmak için yeterli bilgi yoksa görüntülenir.

  • CDatabase::openExclusive Sınıf kitaplığının bu sürümünde desteklenmez. Veri kaynağı her zaman paylaşılan olarak açılır (özel değil). Şu anda, bu seçeneği belirtirseniz onay başarısız olur.

  • CDatabase::openReadOnly Veri kaynağını salt okunur olarak açın.

  • CDatabase::useCursorLib ODBC İmleç Kitaplığı DLL'sini yükleyin. İmleç kitaplığı temel ODBC sürücüsünün bazı işlevlerini maskeleyerek dinamik kümelerin kullanımını etkili bir şekilde engeller (sürücü bunları destekliyorsa). İmleç kitaplığı yüklendiğinde desteklenen imleçler yalnızca statik anlık görüntüler ve yalnızca ileri imleçlerdir. Kayıt kümesi nesnesini doğrudan öğesinden CRecordset türetmeden oluşturmayı planlıyorsanız, imleç kitaplığını yüklememelisiniz.

  • CDatabase::noOdbcDialog Yeterli bağlantı bilgisi sağlanıp sağlanmadığına bakılmaksızın ODBC bağlantısı iletişim kutusunu görüntülemeyin.

  • CDatabase::forceOdbcDialog Her zaman ODBC bağlantısı iletişim kutusunu görüntüleyin.

Dönüş Değeri

Bağlantı başarıyla yapılırsa sıfır olmayan; aksi takdirde, kullanıcı daha fazla bağlantı bilgisi isteyen bir iletişim kutusu sunulduğunda İptal'i seçerse 0. Diğer tüm durumlarda, çerçeve bir özel durum oluşturur.

Açıklamalar

Bir kayıt kümesi nesnesi oluşturmak için kullanabilmeniz için önce veritabanı nesnenizin başlatılması gerekir.

lpszConnectString Çağrınızdaki OpenEx parametre bağlantıyı kurmak için yeterli bilgi içermiyorsa, ODBC sürücüsü ayarlamadığınız CDatabase::noOdbcDialog veya CDatabase::forceOdbcDialog parametrede dwOptions bulunmadığınız takdirde kullanıcıdan gerekli bilgileri almak için bir iletişim kutusu açar. çağırdığınızdaOpenEx, bağlantı dizesi, lpszConnectStringnesnesinde CDatabase özel olarak depolanır ve üye işlevi çağrılarak GetConnect kullanılabilir.

İsterseniz, kullanıcıdan parola gibi bilgileri almak için aramadan OpenEx önce kendi iletişim kutunuzu açabilir ve ardından bu bilgileri adresine geçirdiğiniz OpenExbağlantı dizesi ekleyebilirsiniz. Öte yandan, geçirdiğiniz bağlantı dizesi kaydetmek isteyebilirsiniz; böylece uygulamanız bir nesne üzerinde bir CDatabase sonraki çağrıda OpenEx yeniden kullanabilirsiniz.

Bağlantı dizesi birden çok oturum açma yetkilendirme düzeyi (her biri farklı CDatabase bir nesne için) için veya veri kaynağına özgü diğer bilgileri iletmek için de kullanabilirsiniz. bağlantı dizesi hakkında daha fazla bilgi için bkz. ODBC Programcı Başvurusu'nun 6. Bölümü.

Örneğin DBMS ana bilgisayarı kullanılamıyorsa bağlantı girişimi zaman aşımına uğrabilir. Bağlantı girişimi başarısız olursa, OpenEx bir CDBExceptionoluşturur.

Örnek

// 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

Bir işlem sırasında yapılan değişiklikleri tersine çevirmek için bu üye işlevini çağırın.

BOOL Rollback();

Dönüş Değeri

İşlem başarıyla tersine çevrildiyse sıfır olmayan; aksi takdirde 0. Bir Rollback çağrı başarısız olursa, veri kaynağı ve işlem durumları tanımsız olur. 0 döndürürse Rollback , durumunu belirlemek için veri kaynağını denetlemeniz gerekir.

Açıklamalar

Son BeginTrans seferden bu yana yürütülen tüm CRecordset AddNew, Edit, Deleteve Update çağrıları, bu çağrı sırasında var olan duruma geri alınır.

çağrısından Rollbacksonra işlem sona erer ve başka bir işlem için yeniden aramanız BeginTrans gerekir. Çağrılmadan BeginTrans önce geçerli olan kayıt, sonrasında Rollbackyeniden geçerli kayıt olur.

Geri alma sonrasında, geri almadan önce geçerli olan kayıt geçerli kalır. Geri alma işleminden sonra kayıt kümesinin ve veri kaynağının durumu hakkında ayrıntılı bilgi için İşlem (ODBC) makalesine bakın.

Örnek

İşlem: Kayıt Kümesinde İşlem Gerçekleştirme (ODBC) makalesine bakın.

CDatabase::SetLoginTimeout

Deneme veri kaynağı bağlantısı zaman aşımına uğramadan önce izin verilen varsayılan saniye sayısını geçersiz kılmak için veya çağrısından OpenEx Open önce bu üye işlevini çağırın.

void SetLoginTimeout(DWORD dwSeconds);

Parametreler

dwSeconds
Bağlantı denemesi zaman aşımına uğramadan önce izin vermek için gereken saniye sayısı.

Açıklamalar

Örneğin DBMS kullanılamıyorsa bağlantı denemesi zaman aşımına neden olabilir. Başlatılmamış nesneyi oluşturmadan önce veya Opençağrısından önce çağırın SetLoginTimeout OpenEx.CDatabase

Oturum açma zaman aşımları için varsayılan değer 15 saniyedir. Tüm veri kaynakları bir oturum açma zaman aşımı değeri belirtme özelliğini desteklemez. Veri kaynağı zaman aşımını desteklemiyorsa, izleme çıkışı alırsınız ancak özel durum almazsınız. 0 değeri "sonsuz" anlamına gelir.

CDatabase::SetQueryTimeout

Bağlı veri kaynağında sonraki işlemler zaman aşımına uğramadan önce izin verilecek varsayılan saniye sayısını geçersiz kılmak için bu üye işlevini çağırın.

void SetQueryTimeout(DWORD dwSeconds);

Parametreler

dwSeconds
Sorgu denemesi zaman aşımına uğramadan önce izin vermek için gereken saniye sayısı.

Açıklamalar

Ağ erişim sorunları, aşırı sorgu işleme süresi vb. nedeniyle bir işlem zaman aşımına uğradı. Sorgu SetQueryTimeout zaman aşımı değerini değiştirmek istiyorsanız, kayıt kümenizi açmadan önce veya kayıt kümesinin AddNewöğesini Update veya Delete üye işlevlerini çağırmadan önce çağırın. Bu ayar, bu CDatabase nesneyle ilişkilendirilmiş tüm kayıt kümelerine yönelik sonraki Opentüm , AddNew, Updateve Delete çağrılarını etkiler. Açıldıktan sonra kayıt kümesi için sorgu zaman aşımı değerinin değiştirilmesi, kayıt kümesinin değerini değiştirmez. Örneğin, sonraki Move işlemler yeni değeri kullanmaz.

Sorgu zaman aşımları için varsayılan değer 15 saniyedir. Tüm veri kaynakları sorgu zaman aşımı değeri ayarlama özelliğini desteklemez. 0 olan bir sorgu zaman aşımı değeri ayarlarsanız zaman aşımı olmaz; veri kaynağıyla iletişim yanıt vermeyi durdurabilir. Bu davranış geliştirme sırasında yararlı olabilir. Veri kaynağı zaman aşımını desteklemiyorsa, izleme çıkışı alırsınız ancak özel durum almazsınız.

Ayrıca bkz.

CObject Sınıf
Hiyerarşi Grafiği
CRecordset Sınıf