Aracılığıyla paylaş


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

[!NOT]

Visual C++ .NET gibi, Visual C++ ortamı ve sihirbazları artık DAO'yu desteklemez (ancak DAO sınıfları dahil edilmiştir ve hala bunları kullanabilirsiniz).Microsoft, kullanmanızı önerir ole db şablon veya odbc ve mfc yeni projeler için.DAO'yu sadece var olan uygulamaları sürdürmek için kullanmalısınız.

Genel Bakış

Birçok durumda MFC'ın odbc veritabanı sınıflarıyla MFC'ın dao veritabanı sınıflarını kullanan uygulamalar geçirmek için istenebilir.Bu teknik Not mfc odbc ve dao sınıfları arasındaki en ayrıntılı.Göz önünde bulundurularak farklarla isterseniz, odbc sınıflardan uygulamaları mfc sınıflarına geçirmek aşırı zor olmamalı.

Neden odbc için dao geçirmek?

Neden uygulamaları odbc veritabanı sınıflardan dao veritabanı sınıflarına geçirmek isteyebilirsiniz, ancak kararı mutlaka basit veya belirgin nedenleri 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üne sahip herhangi bir odbc veri kaynağına salt okunur.Kendinizi, ancak Microsoft Jet veritabanı altyapısı odbc veri okuyabilir doğrudan odbc çağrı veya odbc veritabanı sınıflarını kullanmak daha verimli olabilir.

odbc/dao kararı kolay basit bazı durumlarda.Örneğin, yalnızca (Access biçimi, Excel biçiminde vb.) belirgin dao veritabanı sınıflarını kullanmak seçimdir doğrudan Microsoft Jet engine okuyabileceği bir biçimde veri erişimi gerektiğinde.

Bir sunucuya veya farklı sunuculara çeşitli verileriniz varsa, daha karmaşık durumlarda ortaya çıkar.Bu durumda, odbc veritabanı sınıflarını veya dao veritabanı sınıflarını kullanmak zor bir karardır.İstediğiniz şeyleri türdeş olmayan birleşimler (sql Server ve Oracle gibi farklı biçimlerde sunuculardan veri birleştirme) beğenmezseniz, sonra Microsoft Jet veritabanı altyapısı, yerine, doğrudan odbc adlı veya odbc veritabanı sınıflarını kullandıysanız gerekli çalışmayı yapmak için zorlama birleşimi gerçekleştirecek.Destekleyen sürücü imleçler odbc sürücüsü kullanıyorsanız, odbc veritabanı sınıflarını en iyi seçeneğiniz olabilir.

Kendi özel gereksinimlerinize göre verilen çeşitli yöntemler performansını sınamak için bazı örnek kod yazmak isteyebilirsiniz seçimi, karmaşık olabilir.Bu teknik Not odbc veritabanı sınıflardan dao veritabanı sınıflarını geçme kararı yapmış olduğunuz varsayılmaktadır.

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

mfc odbc sınıfların özgün tasarım, Microsoft Access ve Microsoft Visual Basic içindeki dao nesne modeli temel.Başka bir deyişle, bu bölümde listelenir odbc ve dao mfc sınıflarının birçok ortak özelliği vardır.Genel olarak, programlama modellerini aynıdır.

Birkaç benzerlikleri vurgulamak için:

  • odbc ve dao sınıfları temel veritabanı yönetim sistemi (dbms)'ni kullanarak veritabanı nesnelerini içerir.

  • Her ikisi de o dbms döndürülen sonuç kümesini temsil eden recordset nesneleri vardır.

  • dao veritabanı ve recordset nesneleri için odbc sınıfları neredeyse aynı sahip.

  • Sınıfları ile her iki veri almak için kod bazı nesne ve üye adı değişiklikleri dışında aynıdır.Değişiklikleri gerekli, ancak genellikle basit ad değişikliği dao sınıfları odbc sınıflardan geçiş yaparken işlemidir.

Örneğin, verileri almak için bu yordamı her iki modeli oluşturmak ve bir veritabanı nesnesi açmak için oluşturmak ve recordset nesnesini açın ve (taşı) yine de bazı işlemi gerçekleştirerek veri gidin.

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

Daha fazla nesneleri ve yöntemleri zengin dao sınıfları içerir, ancak bu bölümde farklılıklar benzer sınıflar ve işlevler yalnızca ayrıntı.

Büyük olasılıkla en belirgin farkları sınıflar arasındaki benzer sınıfları ve genel işlevler için adı değişikliklerdir.Aşağıdaki liste nesneleri, yöntemleri ve veritabanı sınıflarıyla ilişkili genel işlevler ad değişikliklerini gösterir:

Sınıf veya işlev

dao mfc sınıflarındaki 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 İşlevi temel CTime ve TIMESTAMP_STRUCT.

Uygulamanızı etkiler ve birden çok basit ad değişikliklerini gerektiren önemli işlev değişiklikleri aşağıda listelenmiştir.

  • Sabitler ve türü recordset gibi şeyleri açmak 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ılır.

    dao sınıflarıyla dao üstbilgi dosyasında (DBDAOINT. Bu seçeneklerin tanımını sağlar.H).Böylece recordset türü numaralanmış bir üyesi olduğu CRecordset, ancak dao ile sabit yerine.Örneğin kullanacağınız anlık türünü belirtmek için CRecordset odbc, ancak db_open_snapshot türünü belirtmek için CDaoRecordset.

  • Varsayılan kayıt kümesi türü CRecordset olan anlık çalışırken varsayılan kayıt kümesi türü CDaoRecordset olan kesit (odbc sınıf anlık görüntüler hakkında ek bir sorun için aşağıdaki nota bakın).

  • odbc CRecordset sınıfı, bir kayıt kümesi salt ileri türü oluşturma seçeneği vardır.De CDaoRecordset sınıfı, salt ileri recordset türü, ancak yerine bir özellik (veya seçenek) kayıt kümeleri belirli türde değil.

  • Açarken append yalnızca bir kayıt bir CRecordset nesne geliyordu kayıt kümesinin veri okuma ve eklenmiş.İle CDaoRecordset nesne ekleme seçeneği gerçek anlamda veri kümesinin yalnızca olabileceği anlamına gelir eklenir (ve okuma).

  • odbc sınıfları hareket üye işlevler üye CDatabase ve veritabanı düzeyinde.dao sınıflarda hareket üye işlevleri daha yüksek bir düzey sınıf üye (CDaoWorkspace) ve böylece birden fazla etkileyebileceğini CDaoDatabase (hareket alanı) aynı çalışma alanı paylaşan nesneler.

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

  • RFX_Datekullandığı CTime ve TIMESTAMP_STRUCT çalışırken nesneleri DFX_Date kullanan COleDateTime.COleDateTime Hemen hemen aynıdır CTime, üzerinde 8 baytlık ole temel ancak tarihi 4 baytlık yerine time_t şekilde bir çok büyük veri aralığını tutabilir.

    [!NOT]

    dao (CDaoRecordset) odbc salt okunur anlık görüntüler (CRecordset) anlık görüntü sürücüsü ve odbc İmleç Kitaplığı kullanımına bağlı olarak güncelleştirilebilir.İmleç Kitaplığı kullanıyorsanız, CRecordset anlık görüntü güncelleştirilemez.odbc İmleç Kitaplığı herhangi bir masaüstü sürücü paketi 3.0 Microsoft sürücüleri kullanıyorsanız, CRecordset salt okunur anlık görüntüler.Başka bir sürücü kullanıyorsanız, bkz: için sürücünün belgelerine bakın anlık görüntüler (STATIC_CURSORS) salt okunur özelliktedir.

Ayrıca bkz.

Diğer Kaynaklar

Teknik notlar numarasına göre

Kategoriye göre teknik notlar