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 , , Edit Delete ve Update üye işlevlerine AddNew CRecordset 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 BeginTrans baş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ı SetQueryTimeout yaparak 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 , Edit ve 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 CDatabase
iç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 CDatabase
daha fazla bilgi için Veri Kaynağı (ODBC) ve Genel Bakış: Veritabanı Programlama makalelerine bakın.
Devralma Hiyerarşisi
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 , , Edit
Delete
ve Update
üye işlevlerine yapılan AddNew
bir 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 Rollback
sorunlara 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ı SQLPrepare
yapmanı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 SQLSetConnectOption
doğ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 y
veri 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
CDocument
gö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 AddNew
yapılan çağrıyla başlayan bir CRecordset
nesnenin , Edit
, Delete
ve 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 CString
geç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 ExecuteSQL
doğ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::SetBookmark
gerekir.
Aşağıdaki tabloda değerinin dönüş değeri için birleştirilebilen bit maskesi değerleri GetBookmarkPersistence
listelenir.
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::CanBookmark kayı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
const
CString
ç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ş CString
bir .
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ş CString
bir 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ı CDatabase
yerine 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 SQLSetPos
doğ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ı OnSetOptions
olan 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 lpszDSN
yeniden 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 TRUE
onay 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, lpszConnect
nesnesinde 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 Open
bağ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 CDBException
oluş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 lpszConnectString
geç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 öğesindenCRecordset
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, lpszConnectString
nesnesinde 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 OpenEx
bağ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 CDBException
oluş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
, Delete
ve Update
çağrıları, bu çağrı sırasında var olan duruma geri alınır.
çağrısından Rollback
sonra 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 Rollback
yeniden 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 Open
tüm , AddNew
, Update
ve 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.