Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Not
Sınıf DataSet ve ilgili sınıflar, uygulamaların veritabanıyla bağlantısı kesilirken uygulamaların bellekteki verilerle çalışmasını sağlayan 2000'lerin başlarındaki eski .NET Framework teknolojileridir. Teknolojiler özellikle kullanıcıların verileri değiştirmesine ve değişiklikleri veritabanında kalıcı hale getirebilmesine olanak tanıyan uygulamalar için kullanışlıdır. Veri kümeleri başarısı kanıtlanmış bir teknoloji olsa da, yeni .NET uygulamaları için önerilen yaklaşım Entity Framework Core kullanmaktır. Entity Framework, tablosal verilerle nesne modelleri olarak çalışmak için daha doğal bir yol sağlar ve daha basit bir programlama arabirimine sahiptir.
TableAdapter bileşeni, belirttiğiniz bir veya daha fazla sorguyu veya saklı yordamı temel alarak veri kümesini veritabanındaki verilerle doldurur. TableAdapters, veri kümesinde yaptığınız değişiklikleri kalıcı hale getirmek için veritabanında ekleme, güncelleştirme ve silme işlemleri de gerçekleştirebilir. Ayrıca, belirli bir tabloyla ilgisi olmayan genel komutlar da vekleyebilirsiniz.
Not
Visual Studio tasarımcıları TableAdapters oluşturur. Veri kümelerini program aracılığıyla oluşturuyorsanız DataAdapter .NET sınıfını kullanın.
TableAdapter işlemleri hakkında ayrıntılı bilgi için, doğrudan şu makalelerden birine atlayabilirsiniz:
| Makale | Açıklama |
|---|---|
| TableAdapters oluşturma ve yapılandırma | TableAdapters oluşturmak ve yapılandırmak için tasarımcıları kullanmayı öğrenin. |
| Parametreli TableAdapter sorguları oluşturma | Kullanıcıların TableAdapter yordamlarına veya sorgularına bağımsız değişken sağlamasını sağlamayı öğrenin. |
| TableAdapter ile veritabanına doğrudan erişin | TableAdapters'ın DbDirect yöntemlerini kullanmayı öğrenin. |
| Veri kümesini doldururken kısıtlamaları kapatma | Verileri güncelleştirirken yabancı anahtar kısıtlamalarıyla çalışmayı öğrenin. |
| TableAdapter işlevselliğini genişletme | TableAdapters'a özel kod eklemeyi öğrenin. |
| Xml verilerini veri kümesine okuma | Veri kümesindeki XML verileriyle çalışmayı öğrenin. |
TableAdapter'a genel bakış
Tasarımcı tarafından oluşturulan TableAdapters, bir veritabanına bağlanarak sorguları veya saklı yordamları çalıştırır ve döndürülen verilerle DataTable'larını doldurur. TableAdapters ayrıca güncelleştirilmiş verileri uygulamanızdan veritabanına geri gönderir. İlişkili tablosunun şemasına uygun verileri döndürdüğü sürece TableAdapter'da istediğiniz kadar sorgu çalıştırabilirsiniz. Aşağıdaki diyagramda TableAdapters'ın bellekteki veritabanları ve diğer nesnelerle nasıl etkileşimde olduğu gösterilmektedir:
bir istemci uygulamasında TableAdapter veri akışını gösteren
TableAdapters, Veri Kümesi Tasarımcısı ile tasarlanmış olsa da, TableAdapter sınıfları DataSetiç içe sınıfları olarak oluşturulmaz. Bunun yerine, her veri kümesine özgü ayrı ad alanlarında bulunurlar. Örneğin, NorthwindDataSetadlı bir veri kümeniz varsa, DataTable içerisindeki NorthwindDataSet nesneleriyle ilişkilendirilmiş olan TableAdapters, NorthwindDataSetTableAdapters ad alanındadır. Belirli bir TableAdapter'a program aracılığıyla erişmek için TableAdapter sınıfının yeni bir örneğini bildirin. Mesela:
NorthwindDataSet northwindDataSet = new NorthwindDataSet();
NorthwindDataSetTableAdapters.CustomersTableAdapter customersTableAdapter =
new NorthwindDataSetTableAdapters.CustomersTableAdapter();
customersTableAdapter.Fill(northwindDataSet.Customers);
İlişkili VeriTablosu şeması
TableAdapter oluşturduğunuzda, TableAdapter'ın ilişkili DataTableşemasını tanımlamak için ilk sorguyu veya saklı yordamı kullanırsınız. TableAdapter'ın Fill yöntemini çağırarak, ilişkili DataTable'i dolduran bu ilk sorguyu veya saklı yordamı çalıştırırsınız. TableAdapter'ın ana sorgusunda yaptığınız tüm değişiklikler ilişkili veri tablosunun şemasına yansıtılır. Örneğin, bir sütunu ana sorgudan kaldırırsanız, Veri Kümesi Tasarımcısı sütunu ilişkili veri tablosundan da kaldırır. TableAdapter'daki ek sorgularda ana sorguda olmayan sütunları döndüren SQL deyimleri kullanılıyorsa, Veri Kümesi Tasarımcısı sütun değişikliklerini ana sorguyla ek sorgular arasında eşitlemeyi dener.
TableAdapter güncelleştirme komutları
TableAdapter'ın güncelleştirme işlevi, TableAdapter Sihirbazı'ndaki ana sorguda ne kadar bilginin kullanılabilir olduğuna bağlıdır. Örneğin, birden çok tablodan (JOINkullanarak), skaler değerlerden, görünümlerden veya toplama işlevlerinin sonuçlarından değer getirmek için yapılandırılmış TableAdapters, başlangıçta güncelleştirmeleri temel alınan veritabanına geri gönderme özelliğiyle oluşturulmaz. Ancak, InsertCommand, UpdateCommandve DeleteCommand özelliklerini Özellikler penceresinde el ile yapılandırabilirsiniz.
TableAdapter sorguları
TableAdapters, ilişkili veri tablolarını doldurmak için birden çok sorgu içerebilir. TabloAdapter için uygulamanızın gerektirdiği kadar sorgu tanımlayabilirsiniz. Her sorgu ilişkili veri tablosuyla aynı şemaya uyan veriler döndürdüğü sürece. Bu özellik, TableAdapter'ın farklı ölçütlere göre farklı sonuçlar yüklemesini sağlar.
Birden çok sorgu içeren TableAdapter'i gösteren
Örneğin, uygulamanız müşteri adlarını içeren bir tablo içeriyorsa, tabloyu belirli bir harfle başlayan her müşteri adıyla dolduran bir sorgu oluşturabilirsiniz. Tabloyu aynı eyalette bulunan tüm müşterilerle dolduran başka bir sorgu oluşturabilirsiniz. bir Customers tablosunu belirli bir durumdaki müşterilerle doldurmak için, durum değeri için aşağıdaki parametreyi alan bir FillByState sorgusu oluşturun: SELECT * FROM Customers WHERE State = @State.
FillByState yöntemini çağırıp parametre değerini geçirerek sorguyu çalıştırın, örneğin: CustomerTableAdapter.FillByState("WA").
TableAdapter'ın veri tablosuyla aynı şemanın verilerini döndüren sorgular eklemenin yanı sıra, skaler (tek) değerler döndüren sorgular da ekleyebilirsiniz. Örneğin, döndürülen veriler tablonun şemasına uymasa bile, müşteri sayısını (SELECT Count(*) From Customers) döndüren bir sorgu CustomersTableAdapteriçin geçerlidir.
ClearBeforeFill özelliği
Varsayılan olarak, TableAdapter'ın veri tablosunu doldurmak için her sorgu çalıştırdığınızda, mevcut veriler temizlenir ve tabloya yalnızca sorgunun sonuçları yüklenir. Bir sorgunun döndürdüğü verileri bir veri tablosundaki mevcut verilere eklemek veya birleştirmek istiyorsanız TableAdapter'ın ClearBeforeFill özelliğini falseolarak ayarlayın. Verileri temizleyip temizlemediğinize bakılmaksızın, kalıcı hale getirmek istiyorsanız güncelleştirmeleri veritabanına açıkça geri göndermeniz gerekir. Bu nedenle, tabloyu dolduran başka bir sorgu çalıştırmadan önce tablodaki verilerde yaptığınız değişiklikleri kaydettiğinizden emin olun. Daha fazla bilgi için bkz. TableAdapter kullanarak verileri güncelleştirme.
"TableAdapter" devralma
TableAdapters, yapılandırılmış bir DataAdapter sınıfını kapsülleyerek standart veri bağdaştırıcılarının işlevselliğini genişletir. Varsayılan olarak, TableAdapter Component sınıfından devralır ve DataAdapter sınıfına yayınlanamaz. TableAdapter'ın DataAdapter sınıfına dönüştürülmesi InvalidCastException hatasıyla sonuçlanır. TableAdapter'ın temel sınıfını değiştirmek için, Veri Kümesi Tasarımcısı'ndaki TableAdapter'ın Component özelliğindeki sınıfından türetilen bir sınıf belirtin.
TableAdapter yöntemleri ve özellikleri
TableAdapter sınıfı bir .NET türü değildir; başka bir deyişle Nesne Tarayıcısı'nda veya başvuru belgelerinde arama yapamazsınız. Visual Studio, daha önce açıklanan sihirbazlardan birini kullandığınızda bunu tasarım zamanında oluşturur. Visual Studio'nun oluşturduğunuz TableAdapter'a atadığı ad, üzerinde çalıştığınız tablonun adını temel alır. Örneğin, Ordersadlı veritabanındaki bir tabloyu temel alan bir TableAdapter oluşturduğunuzda, TableAdapter OrdersTableAdapterolarak adlandırılır. TableAdapter'ın sınıf adını değiştirmek için Veri Kümesi Tasarımcısı'nın Özellikleri penceresindeki Adı özelliğini kullanın.
TableAdapter'ın yaygın olarak kullanılan yöntemleri ve özellikleri şunlardır:
| Üye | Açıklama |
|---|---|
TableAdapter.Fill |
TableAdapter'ın ilişkili veri tablosunu TableAdapter'ın SELECT komutunun sonuçlarıyla doldurur. |
TableAdapter.Update |
Değişiklikleri veritabanına geri gönderir ve güncelleştirmeden etkilenen satır sayısını temsil eden bir tamsayı döndürür. Daha fazla bilgi için bkz. TableAdapter kullanarak verileri güncelleştirme. |
TableAdapter.GetData |
Verilerle dolu yeni bir DataTable döndürür. |
TableAdapter.Insert |
Veri tablosunda yeni bir satır oluşturur. Daha fazla bilgi için bkz. Veritabanına yeni kayıtlar ekleme. |
TableAdapter.ClearBeforeFill |
Fill yöntemlerinden birini çağırmadan önce veri tablosunun boşaltılıp boşaltılmayacağını belirler. |
TableAdapter güncelleştirme yöntemi
TableAdapters, veritabanından okumak ve veritabanından yazmak için veri komutlarını kullanır. tableAdapter'ın ilk Fill (ana) sorgusunu, ilişkili veri tablosunun şemasını oluşturmak için temel olarak kullanın ve InsertCommand yöntemiyle ilişkili UpdateCommand, DeleteCommandve TableAdapter.Update komutlarını kullanın. TableAdapter'ın Update yöntemini çağırdığınızda, TableAdapter ilk kez yapılandırıldığında oluşturulan deyimleri çalıştırır ve TableAdapter Sorgu Yapılandırma Sihirbazıile eklediğiniz ek sorgulardan birini çalıştırmaz.
TableAdapter kullandığınızda, normalde gerçekleştirdiğiniz komutlarla aynı işlemleri etkili bir şekilde gerçekleştirir. Örneğin, bağdaştırıcının Fill yöntemini çağırdığınızda, bağdaştırıcı veri komutunu SelectCommand özelliğinde çalıştırır ve sonuç kümesini veri tablosuna yüklemek için bir veri okuyucu (örneğin, SqlDataReader) kullanır. Benzer şekilde, bağdaştırıcının Update yöntemini çağırdığınızda, veri tablosundaki değiştirilen her kayıt için uygun komutu (UpdateCommand, InsertCommandve DeleteCommand özelliklerinde) çalıştırır.
Not
Ana sorgu yeterli bilgi içeriyorsa tasarımcı TableAdapter'ı oluşturduğunda varsayılan olarak InsertCommand, UpdateCommandve DeleteCommand komutlarını oluşturur. Ancak TableAdapter'ın ana sorgusu tek bir tablo SELECT deyiminden fazlaysa tasarımcı bu komutları oluşturamayabilir. Böyle bir durumda, TableAdapter.Update yöntemini çalıştırdığınızda bir hata alabilirsiniz.
TableAdapter VeriTabanıDoğrudanYöntemleriOluştur
InsertCommand, UpdateCommandve DeleteCommandek olarak, TableAdapters doğrudan veritabanında çalıştırabileceğiniz aşağıdaki yöntemlerle oluşturulur: TableAdapter.Insert, TableAdapter.Updateve TableAdapter.Delete. Veritabanındaki verileri işlemek için bu yöntemleri doğrudan çağırabilirsiniz. Bunun yapılması, ilişkili veri tablosu için bekleyen eklemeleri, güncelleştirmeleri ve silmeleri işlemek üzere TableAdapter.Update çağırmak yerine kodunuzdan bu tek tek yöntemleri çağırabileceğiniz anlamına gelir.
Bu doğrudan yöntemleri oluşturmak istemiyorsanız TableAdapter'ın GenerateDbDirectMethods özelliğini Özellikler penceresinde False olarak ayarlayın. TableAdapter'a eklenen ek sorgular, bu yöntemleri oluşturmayan tek başına sorgulardır.
Null değer alabilen türler için TableAdapter desteği
TableAdapters, Nullable<T> ve T?null atanabilir türleri destekler. Visual Basic'teki null atanabilir değer türleri hakkında daha fazla bilgi için Null atanabilir türler (Visual Basic)bölümüne bakın. C# dilinde null atanabilir türler hakkında daha fazla bilgi için bkz: Null atanabilir değer türleri (C#) .
TableAdapterManager başvurusu
Varsayılan olarak, ilgili tabloları içeren bir veri kümesi oluşturduğunuzda Visual Studio bir TableAdapterManager sınıfı oluşturur. Sınıfının oluşturulmasını önlemek için veri kümesinin Hierarchical Update özelliğinin değerini falseolarak değiştirin. İlişkisi olan bir tabloyu Bir Windows Formu veya WPF sayfasının tasarım yüzeyine sürüklediğinizde, Visual Studio sınıfının bir üye değişkenini bildirir. Veri bağlamayı kullanmıyorsanız değişkeni el ile bildirmeniz gerekir.
TableAdapterManager sınıfı bir .NET türü olmadığından başvuru belgelerinde görünmez. Visual Studio, veri kümesini oluşturma işleminin bir parçası olarak tasarım zamanında onu oluşturur.
Aşağıdaki tabloda, TableAdapterManager sınıfının sık kullanılan yöntemleri ve özellikleri listelenir:
| Üye | Açıklama |
|---|---|
UpdateAll yöntemi |
Tüm veri tablolarındaki tüm verileri kaydeder. |
BackUpDataSetBeforeUpdate özelliği |
TableAdapterManager.UpdateAll
method.Booleanyürütmeden önce veri kümesinin yedek kopyasının oluşturulup oluşturulmayacağını belirler. |
tableNameTableAdapter özelliği |
TableAdapter'i temsil eder. Oluşturulan TableAdapterManager, yönettiği her TableAdapter için bir özellik içerir. Örneğin, Müşteriler ve Siparişler tablosuna sahip bir veri kümesi, CustomersTableAdapter ve OrdersTableAdapter özelliklerini içeren bir TableAdapterManager ile birlikte oluşturulur. |
UpdateOrder özelliği |
Tek tek ekleme, güncelleştirme ve silme komutlarının sırasını denetler. Bu özelliği TableAdapterManager.UpdateOrderOption sabit listesindeki değerlerden birine ayarlayın.Varsayılan olarak, UpdateOrderInsertUpdateDeleteolarak ayarlanır. Bu, veri kümesindeki tüm tablolar için eklemelerin, güncelleştirmelerin ve silmelerin gerçekleştirildiği anlamına gelir. |
Güvenlik
CommandType özelliği Textolarak ayarlanmış veri komutlarını kullandığınızda, istemciden gönderilen bilgileri veritabanınıza geçirmeden önce dikkatle denetleyin. Kötü amaçlı kullanıcılar, veritabanına yetkisiz erişim elde etmek için değiştirilmiş veya fazladan SQL deyimleri göndermeye (eklemeye) çalışabilir. Kullanıcı girişini veritabanına aktarmadan önce her zaman bilgilerin geçerli olduğunu doğrulayın. Mümkün olduğunda parametreli sorgular veya saklı yordamlar kullanmak en iyi yöntemdir.