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.
Uyarı
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.
Uygulama geliştirmedeki en yaygın senaryolardan biri, windows uygulamasındaki bir formdaki verileri görüntülemek, verileri düzenlemek ve güncelleştirilmiş verileri veritabanına geri göndermektir. Bu izlenecek yol, iki ilişkili tablodaki verileri görüntüleyen ve kayıtları düzenlemeyi ve değişiklikleri veritabanına geri kaydetmeyi gösteren bir form oluşturur. Bu örnek, Northwind örnek veritabanındaki Customers ve Orders tablolarını kullanmaktadır.
TableAdapter yöntemini çağırarak Update uygulamanızdaki verileri veritabanına geri kaydedebilirsiniz.
Tabloları Veri Kaynakları penceresinden bir forma sürüklediğinizde, verileri kaydetmek için gereken kod otomatik olarak eklenir. Forma eklenen tüm ek tablolar için bu kodun el ile eklenmesi gerekir. Bu kılavuzda, birden çok tablodan güncelleştirmeleri kaydetmek için kod ekleme gösterilmektedir.
Bu kılavuzda gösterilen görevler şunlardır:
Veri Kaynağı Yapılandırma Sihirbazı ile uygulamanızda veri kaynağı oluşturma ve yapılandırma.
Veri Kaynakları penceresinde öğelerin denetimlerini ayarlama. Daha fazla bilgi için bkz. Veri Kaynakları penceresinden sürüklenirken oluşturulacak denetimi ayarlama.
Veri Kaynakları penceresindeki öğeleri formunuza sürükleyerek veriye bağlı denetimler oluşturma.
Veri kümesindeki her tablodaki birkaç kaydı değiştirme.
Veri kümesindeki güncelleştirilmiş verileri veritabanına geri göndermek için kodu değiştirme.
Önkoşullar
Bu öğreticiyi tamamlamak için Visual Studio'da yüklü .NET masaüstü geliştirmeve Veri depolama ve işleme iş yüklerine ihtiyacınız vardır. Bunları yüklemek için Visual Studio Installer açın ve değiştirmek istediğiniz Visual Studio sürümünün yanındaki Değiştir (veya Daha Fazla >)seçin. Bkz. Visual Studio'yu Değiştir.
Bu kılavuzda SQL Server Express LocalDB ve Northwind örnek veritabanı kullanılmaktadır.
SQL Server Express LocalDB'niz yoksa, SQL Server Express indirme sayfasından veya Visual Studio Yükleyicisi aracılığıyla yükleyin. Visual Studio Yükleyicisi, SQL Server Express LocalDB'yi Veri depolama ve işleme iş yükünün bir parçası olarak veya tek bir bileşen olarak yükleyebilirsiniz.
Aşağıdaki adımları izleyerek Northwind örnek veritabanını yükleyin:
Visual Studio'da SQL Server Nesne Gezgini penceresini açın. (SQL Server Nesne Gezgini, Visual Studio Yükleyicisi'ndeki Veri depolama ve işleme iş yükünün bir parçası olarak yüklenir.) SQL Server düğümünü genişletin. LocalDB örneğinize sağ tıklayın ve Yeni Sorgu'yu seçin.
Sorgu düzenleyicisi penceresi açılır.
Northwind Transact-SQL betiğini panonuza kopyalayın. Bu T-SQL betiği, Northwind veritabanını sıfırdan oluşturur ve verilerle doldurur.
T-SQL betiğini sorgu düzenleyicisine yapıştırın ve ardından yürüt düğmesini seçin.
Kısa bir süre sonra sorgunun çalışması tamamlanır ve Northwind veritabanı oluşturulur.
Windows Forms uygulamasını oluşturma
C# veya Visual Basic için yeni bir Windows Forms Uygulaması projesi oluşturun. Projeyi UpdateMultipleTablesWalkthrough olarak adlandırın.
Veri kaynağını oluşturma
Bu adım, Veri Kaynağı Yapılandırma Sihirbazı'nı kullanarak Northwind veritabanından bir veri kaynağı oluşturur. Bağlantıyı oluşturmak için Northwind örnek veritabanına erişiminiz olmalıdır. Northwind örnek veritabanını ayarlama hakkında bilgi için bkz . Nasıl yapılır: Örnek veritabanlarını yükleme.
Veri menüsünde Veri Kaynaklarını Göster'i seçin.
Veri Kaynakları penceresi açılır.
Veri Kaynağı Yapılandırma Sihirbazı'nı başlatmak için Veri Kaynakları penceresinde Yeni Veri Kaynağı Ekle'yi seçin.
Veri Kaynağı Türü Seçin ekranında Veritabanı'nı ve ardından İleri'yi seçin.
Veri Bağlantınızı Seçin ekranında aşağıdakilerden birini yapın:
Açılan listede Northwind örnek veritabanına bir veri bağlantısı varsa seçin.
-veya-
Yeni Bağlantı'ya seçerek Bağlantı Ekle/Değiştir iletişim kutusunu açın.
Veritabanınız parola gerektiriyorsa, hassas verileri dahil etme seçeneğini belirleyin ve ardından İleri'yi seçin.
Bağlantı dizesini Uygulama Yapılandırması dosyasına kaydet'teİleri'yi seçin.
Veritabanı Nesnelerinizi Seçin ekranında Tablolar düğümünü genişletin.
Müşteriler ve Siparişler tablolarını ve ardından Son'u seçin.
NorthwindDataSet projenize eklenir ve tablolar Veri Kaynakları penceresinde görünür.
Oluşturulacak denetimleri ayarlama
Bu rehberde, tablodaki Customers veriler, verilerin bireysel kontrollerde görüntülendiği Ayrıntılar düzenindedir. Tablodaki Orders veriler, DataGridView kontrolünde görüntülenen kılavuz düzenindedir.
Veri Kaynakları penceresindeki öğelerin bırakma türünü ayarlamak için
Veri Kaynakları penceresinde Müşteriler düğümünü genişletin.
Müşteriler düğümünde Denetim listesinden Ayrıntılar'ı seçerek Müşteriler tablosunun denetimini tek tek denetimlerle değiştirin. Daha fazla bilgi için bkz. Veri Kaynakları penceresinden sürüklenirken oluşturulacak denetimi ayarlama.
Veriye bağlı formu oluşturma
Veri Kaynakları penceresindeki öğeleri formunuza sürükleyerek veriye bağlı denetimler oluşturabilirsiniz.
Ana Müşteriler düğümünü Veri Kaynakları penceresinden Form1'e sürükleyin.
Formda açıklayıcı etiketler içeren veriye bağlı denetimler ve kayıtlarda gezinmek için bir araç şeridi (BindingNavigator) görüntülenir. Bileşen tepsisinde NorthwindDataSet,
CustomersTableAdapter, BindingSource, ve BindingNavigator görünür.İlgili Siparişler düğümünü Veri Kaynakları penceresinden Form1'e sürükleyin.
Uyarı
İlgili Siparişler düğümü Faks sütununun altında bulunur ve Müşteriler düğümünün alt düğümüdür.
DataGridView Formda kayıtlarda gezinmek için bir denetim ve bir araç şeridi (BindingNavigator) görünür. Bir
OrdersTableAdapterve BindingSource bileşen tepsisinde görünür.
Veritabanını güncelleştirmek için kod ekleme
Customers ve Orders TableAdapters yöntemlerini çağırarak Update veritabanını güncelleştirebilirsiniz. Varsayılan olarak, veritabanını güncelleştirmeleri göndermek için formunBindingNavigator koduna kaydet düğmesinin olay işleyicisi eklenir. Bu yordam, güncelleştirmeleri doğru sırada göndermek için kodu değiştirir. Bu, bilgi tutarlılığı hataları oluşturma olasılığını ortadan kaldırır. Kod ayrıca güncelleştirme çağrısını try-catch bloğuna sarmalayarak hata işleme uygular. Kodu uygulamanızın gereksinimlerine uyacak şekilde değiştirebilirsiniz.
Uyarı
Açıklık sağlamak için bu kılavuz bir transaksiyon kullanmaz. Ancak, iki veya daha fazla ilişkili tabloyu güncelleştiriyorsanız, bir işlem içindeki tüm güncelleştirme mantığını ekleyin. İşlem, veritabanındaki tüm ilgili değişikliklerin herhangi bir değişiklik işlenmeden önce başarılı olmasını sağlayan bir işlemdir. Daha fazla bilgi için bkz . İşlemler ve Eşzamanlılık.
Uygulamaya güncelleştirme mantığı eklemek için
üzerindeki BindingNavigatorKaydet düğmesini seçin. Bu işlem Kod Düzenleyicisi'ni olay işleyicisine
bindingNavigatorSaveItem_Clickaçar.İlgili TableAdapters yöntemlerini çağırmak
Updateiçin olay işleyicisindeki kodu değiştirin. Aşağıdaki kod önce her DataRowState (Deleted, Addedve Modified) için güncelleştirilmiş bilgileri tutmak üzere üç geçici veri tablosu oluşturur. Güncelleştirmeler doğru sırada çalıştırılır. Kod aşağıdaki gibi görünmelidir:this.Validate(); this.ordersBindingSource.EndEdit(); this.customersBindingSource.EndEdit(); NorthwindDataSet.OrdersDataTable deletedOrders = (NorthwindDataSet.OrdersDataTable) northwindDataSet.Orders.GetChanges(DataRowState.Deleted); NorthwindDataSet.OrdersDataTable newOrders = (NorthwindDataSet.OrdersDataTable) northwindDataSet.Orders.GetChanges(DataRowState.Added); NorthwindDataSet.OrdersDataTable modifiedOrders = (NorthwindDataSet.OrdersDataTable) northwindDataSet.Orders.GetChanges(DataRowState.Modified); try { // Remove all deleted orders from the Orders table. if (deletedOrders != null) { ordersTableAdapter.Update(deletedOrders); } // Update the Customers table. customersTableAdapter.Update(northwindDataSet.Customers); // Add new orders to the Orders table. if (newOrders != null) { ordersTableAdapter.Update(newOrders); } // Update all modified Orders. if (modifiedOrders != null) { ordersTableAdapter.Update(modifiedOrders); } northwindDataSet.AcceptChanges(); } catch (System.Exception ex) { MessageBox.Show("Update failed"); } finally { if (deletedOrders != null) { deletedOrders.Dispose(); } if (newOrders != null) { newOrders.Dispose(); } if (modifiedOrders != null) { modifiedOrders.Dispose(); } }
Uygulamayı test et
F5 tuşuna basın.
Her tablodaki bir veya daha fazla kaydın verilerinde bazı değişiklikler yapın.
Kaydet düğmesini seçin.
Değişikliklerin kaydedildiğini doğrulamak için veritabanındaki değerleri denetleyin.