Aracılığıyla paylaş


Dynaset

Bu konu dinamik kümeleri açıklamakta ve yer öğelerinden bahsetmektedir.

[!NOT]

Bu konu, CRecordset dahil, MFC ODBC sınıfları için geçerlidir.DAO sınıflarındaki dynasets hakkında bilgi için bkz. CDaoRecordset.DAO ile dinamik küme 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 modunda bir kayıt kümesi nesnesi (genellikle dinamik küme adı verilir) aşağıdaki şekilde veri kaynağı ile eşitlenmiş 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ıtlar ekleyebilir.Uygulamanızın kayıt kümesine eklediği veya kayıt kümesinden sildiği kayıtlar dinamik kümenize yansıtılır.Diğer kullanıcılar tarafından tabloya eklenen kayıtlar siz Yeniden Sorgula üye işlevini çağırarak dinamik kümeyi yeniden oluşturmadığınız sürece dinamik kümenize yansıtılmaz.Diğer kullanıcılar kayıtları sildiğinde, MFC kodu kayıt kümenizdeki silme işlemlerini atlar.Diğer kullanıcıların varolan kayıtlara ilişkin düzenleme değişiklikleri siz sayfayı etkilenen kayda kaydırdıktan hemen sonra dinamik kümenize yansıtılır.

Benzer şekilde, bir dinamik kümede kayıtlarda yaptığınız düzenlemeler diğer kullanıcıların kullandığı dinamik kümelere yansıtılır.Eklediğiniz kayıtlar diğer kullanıcılar dinamik kümelerini yeniden sorgulayana kadar bu kullanıcıların dinamik kümelerine eklenmez.Sildiğiniz kayıtlar diğer kullanıcıların kayıt kümesinde "silindi" olarak işaretlenir.Aynı veritabanına birden fazla bağlantı varsa (çoklu CDatabase nesneleri), bu bağlantılar ile ilişkili kayıt kümeleri kullanıcılarının kayıt kümeleri ile aynı duruma sahiptir.

Dinamik kümeler verinin dinamik olması gerektiğinde büyük önem taşır, (örneğin) havayolu rezervasyon sisteminde olduğu gibi.

[!NOT]

Dinamik kümeler kullanmak için veri kaynağınız için dinamik kümeleri destekleyen bir ODBC sürücüsüne sahip olmanız ve ODBC imleç kitaplığının yüklenmiş olmaması gerekir.Daha fazla bilgi için bkz. Dinamik Kümelerin Kullanılabilirliği.

Bir kayıt kümesinin dinamik bir küme olduğunu belirtmek için CRecordset::dynaset öğesini kayıt kümesi nesnenizin üye işlevinin ilk parametresi olarak geçirin.

[!NOT]

Güncellenebilir dinamik kümeler için, ODBC sürücüsünün konumlandırılmış güncelleştirme deyimlerini ya da ::SQLSetPos ODBC API işlevini desteklemesi gerekir.Her ikisi de destekleniyorsa, MFC verimlilik için :: SQLSetPos kullanır.

Dynasetlerin Kullanılabilirliği

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

  • ODBC imleç kitaplığı DLL'si bu veri kaynağı için kullanılıyor olmamalıdır.

    İmleç kitaplığı kullanılıyorsa, dinamik küme desteği için gerekli olan arka plandaki ODBC sürücüsünün bazı işlevlerini maskeler.Dinamik kümeler kullanmak istiyorsanız (bu bölümün bundan sonrasında açıklandığı şekilde ODBC sürücünüzde dinamik kümeler için gereken işlevsellik varsa), CDatabase nesnesi oluşturduğunuzda MFC'nin imleç kitaplığını yüklememesine neden olabilirsiniz.Daha fazla bilgi için bkz. ODBC ve OpenEx ya da CDatabase sınıfının Open üye işlevi.

    ODBC terminolojisinde dinamik kümeler ve anlık görüntüler işaretçiler olarak adlandırılır.Bir imleç, bir kayıt kümesi içindeki konumunun takip edilmesi için kullanılan bir mekanizmadır.

  • Veri kaynağınız için ODBC sürücüsü anahtar kümesinin kullandığı imleçleri desteklemelidir.

    Anahtar kümesi sürümlü imleçler bir anahtar kümesi edinme ve saklamayla bir tablodan veri yönetir.Anahtarlar, kullanıcı belirli bir kayda kaydırdığı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 parametresine sahip :: SQLGetInfo ODBC API işlevini çağırın.

    Dinamik kümeyi anahtar kümesi desteği olmadan açmaya çalışırsanız, CDBException öğesini dönüş kodu değeri AFX_SQL_ERROR_DYNASET_NOT_SUPPORTED ile birlikte alırsınız.

  • Veri kaynağınız için ODBC sürücüsü genişletilmiş getirmeyi desteklemelidir.

    Genişletilmiş getirme SQL orgunuzun sonuçları üzerinde geriye veya ileriye doğru kaydırma yeteneğidir.Sürücünüzün bu yetiyi destekleyip desteklemediğini belirlemek için SQL_API_SQLEXTENDEDFETCH parametresine sahip ::SQLGetFunctions ODBC API işlevini çağırın.

Güncelleştirilebilir dinamik kümeler (ya da anlık görüntüler) isterseniz, ODBC sürücünüzün :: SQLSetPos ODBC API işlevini veya konumlandırılmış yükseltmeleri desteklemesi gerekir.::SQLSetPos işlevi MFC'nin veri kaynağını SQL deyimleri göndermeden güncelleştirmesine izin verir.Bu destek bulunuyorsa MFC, SQL kullanarak yapacağı güncellemelerde bunu kullanmayı tercih eder.Sürücünüzün :: SQLSetPos öğesini destekleyip desteklemediğini belirlemek için SQL_POS_OPERATIONS parametresine sahip :: SQLGetInfo öğesini çağırın.

Konumlandırılmış güncelleştirmeler, veri kaynak tablosundaki belirli bir satırı tanımlamak için (formun WHERE CURRENT OF <imleçadı>) SQL sözdizimini kullanır.Sürücünüzün konumlandırılmış güncelleştirmeleri destekleyip desteklemediğini belirlemek için SQL_POSITIONED_STATEMENTS parametresine sahip :: SQLGetInfo öğesini çağırın.

Genellikle, MFC dinamik kümeleri (ancak yalnızca ileri kayıt kümeleri değil) düzey 2 API uygunluğu ile bir ODBC sürücüsü gerektirir.Veri kaynağınızın sürücüsü düzey 1 API kümesine uyuyorsa, hem güncellenebilir hem de salt okunur anlık görüntüleri kullanmaya devam edebilirsiniz ama dinamik kümeleri kullanamazsınız.Ancak, genişletilmiş getirme ve anahtar kümesi kullanımlı imleçleri destekliyorsa, düzey 1 sürücüsü dinamik kümeleri destekleyebilir.ODBC uyumluluk seviyeleri hakkında daha fazla bilgi için bkz. ODBC.

[!NOT]

Hem anlık görüntüleri hem de dynaset'leri kullanmak istiyorsanız, bunların iki farklı CDatabase nesnesini (iki farklı bağlantı) temel almasını sağlamalısınız.

ODBC imleç kitaplığı tarafından korunan ara belleği kullanan anlık görüntülerden farklı olarak, dinamik kümeler üstüne geldiğiniz anda bir kaydı doğrudan veri kaynağından getirir.Bu dinamik küme tarafından önceden seçilmiş olan kayıtları veri kaynağıyla eşitlenmiş olarak tutar.

Bu Visual C++ sürümüne dahil edilmiş ODBC sürücülerinin bir listesi ve ek sürücü edinme hakkında bilgi için bkz. ODBC Sürücü Listesi.

Ayrıca bkz.

Kavramlar

Açık veritabanı bağlantısı (odbc)