Aracılığıyla paylaş


Dynaset

Bu konu, dinamik kümeleri açıklar ve kullanılabilirliklerini açıklar.

Dekont

Bu konu, CRecordset de dahil olmak üzere MFC ODBC sınıfları için geçerlidir. DAO sınıflarındaki dinamik kümeler hakkında bilgi için bkz . CDaoRecordset. DAO ile dynaset türündeki kayıt kümelerini açabilirsiniz.

Dinamik küme, dinamik özelliklere sahip bir kayıt kümesidir. Yaşam süresi boyunca, dinamik küme modundaki bir kayıt kümesi nesnesi (genellikle dinamik küme olarak adlandırılır) veri kaynağıyla aşağıdaki şekilde eşitlenmiş olarak kalır. Çok kullanıcılı bir ortamda, diğer kullanıcılar dinamik kümenizdeki kayıtları düzenleyebilir veya silebilir ya da dinamik kümenizin temsil ettiği tabloya kayıt ekleyebilir. Uygulamanızın kayıt kümesine eklediği veya kayıt kümesinden sileceği kayıtlar dinamik kümenize yansıtılır. Diğer kullanıcıların tabloya eklediği kayıtlar, üye işlevini çağırarak Requery dinamik kümeyi yeniden oluşturana kadar dinamik kümenize yansıtılmaz. Diğer kullanıcılar kayıtları sildiğinde, MFC kodu kayıt kümenizdeki silmeleri atlar. Diğer kullanıcıların mevcut kayıtlardaki düzenleme değişiklikleri, etkilenen kayda kaydırdığınızda dinamik kümenize yansıtılır.

Benzer şekilde, bir dinamik kümedeki kayıtlarda yaptığınız düzenlemeler diğer kullanıcılar tarafından kullanılan dinamik kümelere yansıtılır. Eklediğiniz kayıtlar, diğer kullanıcıların dinamik kümelerini yeniden sorgulaya kadar diğer kullanıcıların dinamik kümelerine yansıtılmaz. Sildiğiniz kayıtlar, diğer kullanıcıların kayıt kümelerinde "silinmiş" olarak işaretlenir. Aynı veritabanına birden çok bağlantınız varsa (birden çok CDatabase nesne), bu bağlantılarla ilişkilendirilmiş kayıt kümeleri diğer kullanıcıların kayıt kümeleriyle aynı duruma sahiptir.

Dinamik kümeler, verilerin (örneğin, bir havayolu rezervasyon sisteminde) dinamik olması gerektiğinde en değerlidir.

Dekont

Dinamik kümeleri kullanmak için, veri kaynağınız için dinamik kümeleri destekleyen bir ODBC sürücünüz olmalıdır ve ODBC imleç kitaplığı yüklenmemelidir. Daha fazla bilgi için bkz . Dynaset'lerin kullanılabilirliği.

Kayıt kümesinin dinamik küme olduğunu belirtmek için, kayıt kümesi nesnenizin üye işlevine Open ilk parametre olarak geçirinCRecordset::dynaset.

Dekont

Güncelleştirilebilir dinamik kümeler için ODBC sürücünüz konumlandırılmış güncelleştirme deyimlerini veya ::SQLSetPos ODBC API işlevini desteklemelidir. Her ikisi de destekleniyorsa, MFC verimlilik için kullanır ::SQLSetPos .

Dynaset'lerin kullanılabilirliği

Aşağıdaki gereksinimler karşılanırsa MFC veritabanı sınıfları dinamik kümeleri destekler:

  • ODBC imleç kitaplığı DLL'sinin bu veri kaynağı için kullanımda olmaması gerekir.

    İmleç kitaplığı kullanılırsa, dinamik küme desteği için gerekli olan temel ODBC sürücüsünün bazı işlevlerini maskeler. Dinamik kümeleri kullanmak istiyorsanız (ve ODBC sürücünüz bu bölümün geri kalanında açıklandığı gibi dinamik kümeler için gerekli işlevlere sahipse), nesne CDatabase oluşturduğunuzda MFC'nin imleç kitaplığını yüklememesini sağlayabilirsiniz. Daha fazla bilgi için bkz. ODBC ve sınıfının CDatabaseOpenEx veya Open member işlevi.

    ODBC terminolojisinde dinamik kümeler ve anlık görüntüler imleç olarak adlandırılır. İmleç, kayıt kümesindeki konumunu izlemek için kullanılan bir mekanizmadır.

  • Veri kaynağınızın ODBC sürücüsü anahtar kümesi temelli imleçleri desteklemelidir.

    Anahtar kümesi temelli imleçler, bir dizi anahtarı alıp depolayarak tablodaki verileri yönetir. Anahtarlar, kullanıcı belirli bir kayda kaydırıldığında tablodan geçerli verileri almak için kullanılır. Sürücünüzün bu desteği sağlayıp sağlamadığını belirlemek için SQL_SCROLL_OPTIONS parametresiyle ODBC API işlevini çağırın.::SQLGetInfo

    Anahtar kümesi desteği olmadan bir dynaset açmaya çalışırsanız, AFX_SQL_ERROR_DYNASET_NOT_SUPPORTED dönüş kodu değeriyle bir alırsınız CDBException .

  • Veri kaynağınızın ODBC sürücüsü genişletilmiş getirme işlemini desteklemelidir.

    Genişletilmiş getirme, SQL sorgunuzun elde edilen kayıtları üzerinde ileri ve geri kaydırma özelliğidir. Sürücünüzün bu özelliği destekleyip desteklemediğini belirlemek için SQL_API_SQLEXTENDEDFETCH parametresiyle ODBC API işlevini çağırın.::SQLGetFunctions

Güncelleştirilebilir dinamik kümeleri (veya anlık görüntüleri) istiyorsanız, ODBC sürücünüz odbc API işlevini veya konumlanmış güncelleştirmeleri de desteklemelidir ::SQLSetPos . işlevi, ::SQLSetPos MFC'nin SQL deyimleri göndermeden veri kaynağını güncelleştirmesine olanak tanır. Bu destek varsa, MFC BUNU SQL kullanarak güncelleştirmeler yapmak için tercihen kullanır. Sürücünüzün destekleyip desteklemediğini ::SQLSetPosbelirlemek için SQL_POS_OPERATIONS parametresiyle çağrısında ::SQLGetInfo bulun.

Konumlandırılan güncelleştirmeler, veri kaynağındaki tabloda belirli bir satırı tanımlamak için SQL söz dizimini (WHERE CURRENT OF<cursorname> biçiminde) kullanır. Sürücünüzün konumlandırılmış güncelleştirmeleri destekleyip desteklemediğini belirlemek için SQL_POSITIONED_STATEMENTS parametresiyle çağrısı ::SQLGetInfo yapın.

Genel olarak, MFC dinamik kümeleri (yalnızca ileriye doğru kayıt kümeleri değil) düzey 2 API uyumluluğuna sahip bir ODBC sürücüsü gerektirir. Veri kaynağınızın sürücüsü düzey 1 API kümesine uygunsa hem güncelleştirilebilir hem de salt okunur anlık görüntüleri ve salt iletme kayıt kümelerini kullanabilirsiniz ancak dinamik kümeleri kullanamazsınız. Ancak düzey 1 sürücüsü, genişletilmiş getirme ve anahtar kümesi temelli imleçleri destekliyorsa dinamik kümeleri destekleyebilir. ODBC uyumluluk düzeyleri hakkında daha fazla bilgi için bkz . ODBC.

Dekont

Hem anlık görüntüleri hem de dinamik kümeleri kullanmak istiyorsanız, bunları iki farklı nesneye (iki farklı CDatabase bağlantı) dayandırmalısınız.

ODBC imleç kitaplığı tarafından tutulan ara depolamayı kullanan anlık görüntülerin aksine dinamik kümeler, siz kaydı kaydırdığınız anda doğrudan veri kaynağından bir kayıt getirir. Bu, ilk olarak dinamik küme tarafından seçilen kayıtları veri kaynağıyla eşitlenmiş olarak tutar.

Visual C++'ın bu sürümünde bulunan ODBC sürücülerinin listesi ve ek sürücüler edinme hakkında bilgi için bkz . ODBC Sürücü Listesi.

Ayrıca bkz.

Açık Veritabanı Bağlantısı (ODBC)