TN055: mfc odbc veritabanı sınıf uygulamaları mfc dao sınıflara geçiş

Genel bakış

Birçok durumda MFC'ın odbc veritabanı sınıflarıyla MFC'ın dao veritabanı sınıflarını kullanan uygulamalar göç istenebilir. Bu teknik not mfc odbc ve dao sınıfları arasındaki farkları en detaylı. İle akıl arasındaki farklılıklar, o aşırı isterseniz, odbc sınıflardan uygulamaları mfc sınıflarına geçirmek zor olmamalı.

Odbc için dao neden göç?

Neden uygulamalarının odbc veritabanı sınıflardan dao veritabanı sınıflarına geçirmek isteyebilirsiniz, ancak kararı mutlaka basit veya belirgin olmayan nedenlerle bir dizi vardır. Akılda tutulması gereken bir şey dao tarafından kullanılan Microsoft Jet veritabanı altyapısı için odbc sürücüsü olan herhangi bir odbc veri kaynağına okunur. odbc veritabanı sınıflarını kullanabilir veya kendiniz, ancak Microsoft Jet veritabanı altyapısı odbc veri okuyabilir doğrudan odbc çağrı daha verimli olabilir.

Odbc/dao karar kolay basit bazı durumlar vardır. Örneğin, yalnızca Microsoft Jet engine (erişim biçimi, FoxPro biçiminde, Excel formatında vb.) apaçık seçme dao veritabanı sınıflarını kullanmaktır doğrudan okuyabilen bir biçimde veri erişimi gerektiğinde.

Verilerinizi bir sunucuya veya farklı sunuculara çeşitli varken daha karmaşık durumlar ortaya çıkmaktadır. Bu durumda, odbc veritabanı sınıflarını veya dao veritabanı sınıflarını kullanmak zor bir karardır. İsterseniz türdeş olmayan birleşimler (birleştirme verileri sql Server ve Oracle gibi birden çok biçimde sunuculardan) gibi şeyler, sonra Microsoft Jet veritabanı altyapısı birleştirme gerçekleştirir, sizin için yerine kullanılan odbc veritabanı sınıflarını ya da doğrudan odbc denilen gerekli çalışmaları yapmaya zorluyor. Destekleyen sürücü imleçler odbc sürücüsü kullanıyorsanız, en iyi seçim odbc veritabanı sınıflarını olabilir.

Sen-ebilmek istemek-e verilen özel gereksinimleriniz için çeşitli yöntemler performansını sınamak için bazı örnek kod yazmak seçim karmaşık olabilir. Bu teknik not dao veritabanı sınıflarıyla odbc veritabanı sınıflardan geçiş kararı yaptığınız varsayılmaktadır.

Odbc veritabanı sınıflarını ve mfc dao veritabanı sınıflar arasındaki benzerlikler

Mfc odbc sınıfların özgün tasarım Microsoft Access ve Microsoft Visual Basic kullanılmaktadır dao nesne modeline bağlıdır. Bu, tüm bu bölümde listelenir odbc ve dao mfc sınıfları birçok ortak özellikleri olduğu anlamına gelir. Genel olarak, programlama modelleri aynıdır.

Birkaç benzerlikleri vurgulamak için:

Örneğin yordam veri almak için her iki model oluşturmak ve bir veritabanı nesnesi açmak için oluşturmak ve bir recordset nesnesi açar ve (taşı) olsa bazı işlemi gerçekleştirerek veri gidin.

Odbc ve dao mfc sınıflar arasındaki farklar

Dao derslere daha fazla nesneleri ve yöntemleri daha zengin bir dizi içerir, ancak bu bölümde sadece benzer sınıflar ve işlevler farklılıkları detay.

Muhtemele&n en belirgin farkları sınıflar arasındaki benzer sınıfları ve küresel işlevler için adı değişikliklerdir. Aşağıdaki liste, ad değişiklikleri ofnbsp gösterir; nesneleri, yöntemleri ve veritabanı sınıflarıyla ilişkili genel işlevler:

Sınıf veya işlev Mfc dao sınıfları eşdeğer
CDatabase CDaoDatabase
CDatabase::ExecuteSQL CDaoDatabase::Execute
CRecordset CDaoRecordset
CRecordset::GetDefaultConnect CDaoRecordset::GetDefaultDBName
CFieldExchange CDaoFieldExchange
RFX_Bool DFX_Bool
RFX_Byte DFX_Byte
RFX_Int DFX_Short
RFX_Long DFX_Long
DFX_Currency
RFX_Single DFX_Single
RFX_Double DFX_Double
RFX_Date * DFX_Date (COleDateTime-tabanlı)
RFX_Text DFX_Text
RFX_Binary DFX_Binary
RFX_LongBinary DFX_LongBinary

* RFX_Date işlevi CTime ve TIMESTAMP_STRUCT göre.

Uygulamanızı etkiler ve daha basit ad değişikliklerini gerektiren işlevselliğini önemli değişiklikler aşağıda listelenmiştir.

  1. Sabitleri ve türü recordset gibi şeyler açın ve recordset açma seçenekleri belirtmek için kullanılan makrolar değiştirildi.

    Odbc sınıflarıyla mfc makrolar aracılığıyla bu seçenekleri tanımlamak için gerekli veya türleri numaralandırılan.

    Dao sınıflarıyla dao üstbilgi dosyası (DBDAOINT. Bu seçeneklerin tanımını sağlarh). böylece recordset türü bir Enum CRecordsetüyesidir, ancak dao ile bunun yerine sabit olduğunu. Örneğin CRecordset türü odbc ama db_open_snapshot CDaoRecordset türünü belirtirken belirtirken anlık kullanabilirsiniz.

  2. CDaoRecordset değişken küme CRecordset varsayılan kayıt kümesi türü varsayılan kayıt kümesi türü ise anlık ise (odbc sınıf anlık görüntüleri hakkında ek bir sorun için aşağıdaki nota bakın).

  3. Odbc CRecordset sınıfı, bir kayıt kümesi salt ileri türü oluşturma seçeneği vardır. CDaoRecordset sınıfta değil bir recordset türü, ama yerine bir özellik veya seçeneği belirli türdeki kayıt kümeleri yalnızca ileri.

  4. Bir CRecordset nesnesi açarken salt ekleme bir kayıt, kayıt kümesinin veri okumak ve eklenmiş anlamına geliyordu. CDaoRecordset nesnesiyle yalnızca Ekle seçeneği kayıt kümesinin veri yalnızca olabilir anlamı eklenir (ve okuma).

  5. Odbc sınıfların hareketi üye işlevleri CDatabase ve veritabanı düzeyinde hareket üyeleridir. dao sınıflarında hareket üye işlevleri üst düzey sınıf (CDaoWorkspace) üyesi olan ve böylece aynı çalışma (hareket alanı) paylaşan birden çok CDaoDatabase nesneleri etkileyebilir.

  6. Özel durum sınıfı değişmiştir. CDBExceptions dao sınıfları atılan odbc sınıfları ve CDaoExceptions.

  7. RFX_Date , DFX_Date COleDateTimekullanırken CTime ve TIMESTAMP_STRUCT nesneleri kullanır. COleDateTime CTimeiçin neredeyse aynıdır, ancak bir 4 baytlık time_t yerine bir 8 bayt ole tarihi çok daha kapsamlı veri alabilir böylece temel.

&Notnbsp;  odbc (CRecordset) anlık sürücü ve odbc imleç kitaplığı kullanımına bağlı olarak güncelleştirilebilir olabilir dao (CDaoRecordset) anlık salt okunur. İmleç kitaplığı kullanıyorsanız, CRecordset anlık güncelleştirilebilir. Masaüstü Sürücü paketi 3.0 Microsoft sürücülerinin herhangi bir odbc imleç kitaplığı kullanıyorsanız, CRecordset anlık salt okunur. Başka bir sürücü kullanıyorsanız, anlık görüntüleri (STATIC_CURSORS) salt okunur olup olmadığını görmek için sürücü belgelerine bakın.

Teknik notlar numarasına göre |nbsp; Teknik notlar kategorisine göre

Index