Aracılığıyla paylaş


MFC: Belgeler ve Görünümler Olmadan Veritabanı Sınıflarını Kullanma

Bazen veritabanı uygulamalarınızda frameworkün belge/görünüm mimarisini kullanmak istemeyebilirsiniz. Bu konu şunları açıklar:

  • Belgeleri kullanmanız gerekmediğinde belge serileştirmesi gibi.

  • Uygulama sihirbazı seçenekleri serileştirme ve Yeni, , Kaydet ve Farklı Kaydet gibi belgeyle ilgili Dosya menüsü komutları olmadan uygulamaları desteklemek için.

  • En az belge kullanan uygulamayla nasıl çalışılmalı.

  • Belgesi veya görünümü olmayan uygulama nasıl yapılandırılır.

Belgelere Ne Zaman İhtiyaç Duymazsınız

Bazı uygulamalarda ayrı bir belge kavramı vardır. Bu uygulamalar genellikle dosyanın tamamını veya büyük bir kısmını Dosya Aç komutuyla depolama biriminden belleğe yükler. Güncellenmiş dosyanın tamamını tek seferde Dosya Kaydet veya Farklı Kaydet komutuyla depolama birimine geri yazarlar. Kullanıcının gördüğü veri dosyasıdır.

Ancak bazı uygulama kategorileri belge gerektirmezler. Veritabanı uygulamaları işlem olarak çalışırlar. Uygulama veritabanından kayıt seçer ve genelde her seferde bir kez olarak kullanıcıya sunar. Kullanıcının gördüğü genelde bellekte sadece bir tane olan tek geçerli kayıttır.

Uygulamanız veri saklamak için belge gerektirmiyorsa, framework'ün belge/görünüm mimarisinin bir kısmını veya tamamını dağıtabilirsiniz. Ne kadar dağıtacağınız tercih ettiğiniz yaklaşıma bağlıdır. Şunu yapabilirsiniz:

  • Veri kaynağınıza bağlantı saklamak için yer olarak en az belgeyi kullanırsınız ancak serileştirme gibi normal belge özelliklerinden vazgeçersiniz. Bu, verinin birçok görünümünü istediğinizde, bütün görünümleri eşitlemek istediğinizde ve bunların hepsini tek seferde güncellemek istediğinizde vb. kullanışlıdır.

  • Görünüm kullanmak yerine, içine doğrudan çizeceğiniz çerçeve penceresi kullanın. Bu durumda, belgeyi yok sayın ve bütün verileri veya veri bağlantılarını çerçeve penceresi nesnesinde saklayın.

Belgeler ve Görünümler için Uygulama Sihirbazı Seçenekleri

MFC Uygulama Sihirbazının aşağıdaki tabloda listelenen Veritabanı seçme desteği'nde çeşitli seçenekleri vardır. Eğer uygulama oluşturmak için MFC Uygulama Sihirbazı'nı kullanıyorsanız, bütün bu seçenekler belgelerle ve görünümlerle bir uygulama üretecektir. Bazı seçenekler, gereksiz belge özelliklerini atlayan belgeler ve görünümler sağlar. Daha fazla bilgi için bkz. Veritabanı destek, MFC uygulama sihirbaz.

Seçenek

Görünüm

Belge

None

CView'ten türetilmiş.

Veri tabanı desteği sağlamaz. Bu değer, varsayılan seçenektir.

Uygulama tür, MFC Uygulaması sihirbaz sayfasındaki Belge/görünüm mimarisi desteği seçeneğini seçerseniz, serileştirmeyi ve Dosya menüsündeki New (Yeni), , Kaydet ve Farklı Kaydet komutlarını içeren tam belge desteğini alırsınız. Bkz. Belgesi Olmayan Uygulamalar.

Sadece başlık dosyaları

CView'ten türetilmiş.

Uygulamanız için temel düzeyde veritabanı desteği sağlar.

Afxdb.h içerir. Bağlantı kitaplıklarını ekler ancak herhangi bir veritabanına özel sınıf oluşturmaz. Daha sonra kayıt kümelerini oluşturabilirsiniz ve kayıtları incelemek ve güncellemek için kullanabilirsiniz.

Dosya desteği olmadan veritabanı görünümü

CRecordView'ten türetilmiş

Belge desteği sağlar ancak serileştirme desteği yoktur. Belge kayıt kümesi saklayabilir ve çoklu görünümleri düzenleyebilir; serileştirmeyi veya New (Yeni), , Kaydet ve Farklı Kaydet komutlarını desteklemez. Bkz. En Az Belgeli Uygulamalar. Veritabanı görünümü dahil ederseniz, verinin kaynağını belirtmeniz gerekir.

Veritabanı başlık dosyalarını, bağlantı kitaplıklarını, kayıt görünümünü ve kayıt kümesini içerir. (Uygulama tür, MFC Uygulaması sihirbaz sayfasındaki Belge/görünüm mimarisi desteği seçeneği seçili olan uygulamalar için kullanılabilir.)

Dosya desteği ile veritabanı görünümü

CRecordView'ten türetilmiş

Serileştirmeyi ve belgeyle ilgili Dosya menüsü komutlarını içeren tam belge desteği sağlar. Veritabanı uygulamaları genelde dosya temelli çalışmak yerine kayıt temelli çalışırlar ve bu sebeple serileştirmeye gerek yoktur. Ancak, serileştirme için özel bir kullanım olabilir. Bkz. En Az Belgeli Uygulamalar. Veritabanı görünümü dahil ederseniz, verinin kaynağını belirtmeniz gerekir.

Veritabanı başlık dosyalarını, bağlantı kitaplıklarını, kayıt görünümünü ve kayıt kümesini içerir. (Uygulama tür, MFC Uygulaması sihirbaz sayfasındaki Belge/görünüm mimarisi desteği seçeneği seçili olan uygulamalar için kullanılabilir.)

Serileştirmenin alternatifleri ve alternatif serileştirme kullanımı açıklamaları için, bkz. Serialization: Serialization vs. Database Input/Output.

En Az Belgeli Uygulamalar

MFC Uygulama Sihirbazı form temelli veri erişimi uygulamalarını destekleyen iki seçeneğe sahiptir. Her seçenek CRecordView türetilmiş görünüm sınıfı ve belge oluşturur. Belgenin dışında bıraktıklarına göre farklılaşırlar.

Dosya Desteği Olmayan Belge

Belge serileştirmesine ihtiyacınız yoksa Dosya desteği olmayan veritabanı görünümü uygulama sihirbazı veritabanı seçeneğini seçin. Belge aşağıdaki kullanışlı amaçlara hizmet eder:

  • CRecordset nesnesini saklamak için uygun bir yerdir.

    Bu kullanım sıradan belge kavramları ile paraleldir: belge veriyi (veya bu durumda bir grup kaydı) depolar ve görünüm belgenin bir görünümüdür.

  • Uygulamanız çoklu görünüm sunuyorsa (çoklu kayıt görünümleri gibi), belge görünüm düzenlemeyi destekler.

    Eğer çoklu görünümler aynı veriyi gösterirse, herhangi bir görünüm veriyi değiştirdiğinde bütün görünümlerin güncellemesini düzenlemek için CDocument::UpdateAllViews üye işlevini kullanabilirsiniz.

Bu seçeneği genellikle basit form temelli uygulamalar için kullanırsınız. Uygulama sihirbazı bu tür uygulamalar için otomatik olarak uygun bir yapı sağlar.

Dosya Desteği Olan Belge

Belge ile ilgili Dosya menü komutları ve belge serileştirmesi için alternatif kullanımınız olduğunda Dosya desteği olan veritabanı görünümü uygulama sihirbazı veritabanı seçeneğini seçin. Programınızın veri erişim kısmı için, belgeyi Dosya Desteği Olmayan Belge'de tanımlandığı gibi kullanabilirsiniz. Belgenin serileştirme özelliğini, örneğin, kullanıcının tercihlerini veya diğer kullanışlı bilgileri saklayan serileştirilmiş kullanıcı profil belgesi okumak ve yazmak için kullanabilirsiniz. Daha fazla fikir için, bkz: Serialization: Serialization vs. Database Input/Output.

Uygulama sihirbazı bu seçeneği destekler ancak belgeyi serileştiren kodu siz yazmalısınız. Serileştirilmiş bilgiyi belgenin veri üyelerinde saklar.

Belgesi Olmayan Uygulamalar

Bazen belgesi veya görünümü olmayan uygulama yazmak isteyebilirsiniz. Belgeler olmadan, verilerinizi (CRecordset nesnesi gibi) çerçeve penceresi sınıfınızda veya uygulama sınıfınızda saklarsınız. Herhangi ek gereksinimler uygulamanın kullanıcı arayüzü sunup sunmadığına bağlıdır.

Kullanıcı Arayüzü olan Veritabanı Desteği

Kullanıcı arayüzünüz varsa (örneğin konsol komut satırı arayüzünden başka), uygulamanız görünüm yerine çerçeve penceresinin istemci alanına doğrudan çizer. Bu tür bir uygulama ana kullanıcı arayüzü için CRecordView, CFormView veya CDialog kullanmaz ancak, sıradan iletişimler için normalde CDialog kullanır.

Belgeler olmadan Uygulamaları Yazma

Uygulama sihirbazı belgeler olmadan uygulama oluşturmayı desteklemediği için kendi CWinApp türetilmiş sınıfınızı yazmalısınız ve eğer gerekliyse CFrameWnd veya CMDIFrameWnd sınıfı da oluşturmalısınız. CWinApp::InitInstance'ı geçersiz kılın ve uygulama nesnesini aşağıdaki gibi bildirin:

CYourNameApp theApp;

Framework hala ileti eşleme mekanizmasını ve diğer pek çok özelliği sağlar.

Kullanıcı Arayüzünden Ayrı Veritabanı Desteği

Bazı uygulamaların kullanıcı arayüzüne ihtiyacı yoktur veya sadece en alt düzeyde bir taneye ihtiyacı vardır. Örneğin, şunu yazdığınızı varsayın:

  • Uygulama ve veri kaynağı arasındaki verinin özel işlemi için diğer uygulamaların (istemciler) çağırdığı ara veri erişimi nesnesi.

  • Bir veritabanı biçiminden diğerine veri taşıyan uygulama veya hesaplamaları yapan ve toplu güncellemeleri gerçekleştiren uygulama gibi kullanıcı müdahalesi olmadan veri işleyen uygulamalar.

Hiçbir belge CRecordset veya CDaoRecordset nesnesine sahip olmadığından, büyük ihtimalle CWinApp türetilmiş uygulama sınıfınızda gömülü veri üyesi olarak saklamak istersiniz. Alternatifler şunları içerir:

  • Kalıcı CRecordset veya CDaoRecordset nesnesi tutmamak. Kayıt kümesi sınıf yapıcısına NULL geçirebilirsiniz. Bu durumda, framework kayıt kümesinin GetDefaultConnect üye işlevindeki bilgileri kullanarak geçici CDatabase veya CDaoDatabase nesnesi oluşturur. Bu en muhtemel alternatif yaklaşımdır.

  • CRecordset veya CDaoRecordset nesnesini genel değişken yapma. Bu değişken, CWinApp::InitInstance geçersiz kılmanızda dinamik olarak tanımladığınız kayıt kümesi nesnesine bir işaretçi olmalıdır. Bu framework başlatılmadan önce nesne oluşturmaya çalışılmasını engeller.

  • Kayıt kümesi nesnelerini belge veya görünüm bağlamında kullandığınız gibi kullanma. Uygulamanızın veya çerçeve penceresi nesnelerinizin üye işlevlerinde kayıt kümelerini oluşturur.

Ayrıca bkz.

Kavramlar

MFC Veritabanı Sınıfları (ODBC ve DAO)