İzlenecek yol: Bir veritabanı (birden çok tabloları) verilerini kaydetme
Bir Windows uygulamasında bir formdaki verileri görüntülemek, veri düzenleme ve güncelleştirilmiş verileri veritabanına geri göndermek için uygulama geliştirmede en yaygın senaryolardan biri olan. Bu izlenecek yolda, iki ilgili tablodaki verileri görüntüleyen ve kayıtları düzenleyemez ve değişiklikleri veritabanına nasıl gösterir form oluşturur. Bu örnek Customers ve Orders Northwind örnek veritabanından tablo.
Veri uygulamanız veritabanına çağırarak kaydedebilirsiniz Update bir TableAdapter yöntemi. Öğeleri sürükleyerek Veri kaynakları verileri kaydetmek için kod penceresinde otomatik olarak bir form üzerine atılan ilk tablonun eklenir. Forma eklenen ek tabloları veri kaydetmek için gereken herhangi bir kodu el ile eklenmesi gerekir. Bu izlenecek yolda, birden fazla tablodan güncelleştirmeleri kaydetmek için kod eklemek gösterilmiştir.
Not
Gördüğünüz iletişim kutuları ve menü komutları, etkin ayarlarınıza ve ürün sürümüne bağlı olarak Yardım menüsünde açıklanana göre farklılık gösterebilir.Ayarlarınızı değiştirmek için Araçlar menüsünden İçeri ve Dışarı Aktarma Ayarları'nı seçin.Daha fazla bilgi için bkz. Visual Studio ayarları.
Bu izlenecek yolda gösterilen görevler aşağıdakileri içerir:
Yeni oluşturma Windows Application proje.
Bir veri kaynağı ile uygulamanızın yapılandırma ve oluşturma Data Source Configuration Wizard.
Öğeler denetimleri ayarlama Veri Kaynakları Penceresi. Daha fazla bilgi için bkz. Nasıl yapılır: veri kaynağı penceresinden sürükleyerek, oluşturulacak denetim kümesi.
Öğeleri sürükleyerek veriye bağlı denetimler oluşturma Veri kaynakları formunuza pencere.
Dataset içindeki her tablonun birkaç kayıtları değiştirme.
Güncelleştirilmiş verileri DataSet nesnesinin veritabanına geri göndermek için kodunu değiştirme.
Önkoşullar
Bu izlenecek yolu tamamlamak için şunları yapmanız gerekir:
- Northwind örnek veritabanı erişimi. Daha fazla bilgi için bkz. Nasıl yapılır: örnek veritabanları yükleme.
Windows uygulama oluşturma
İlk adım oluşturmaktır bir Windows Application. Proje için bir ad atama sırasında bu adım isteğe bağlıdır, ancak daha sonra kaydetme hakkındaki biz planlama çünkü biz bunu bir ad sağlayacaktır.
Yeni bir Windows Application projesi oluşturmak için
Dan Dosya menüsünde, yeni bir proje yaratın.
Proje adı UpdateMultipleTablesWalkthrough.
Seçin Windows Application 'ı tıklatın ve Tamam. Daha fazla bilgi için bkz. İstemci Uygulamaları Geliştirme.
UpdateMultipleTablesWalkthrough proje yaratılır ve eklenen Solution Explorer.
Veri Kaynağı Oluşturma
Bu adım, Northwind veritabanı kullanarak bir veri kaynağı oluşturur Data Source Configuration Wizard. Bağlantı oluşturmak için Northwind örnek veritabanına erişiminiz olmalıdır. Northwind örnek veritabanı kurma hakkında daha fazla bilgi için bkz: Nasıl yapılır: örnek veritabanları yükleme.
Veri kaynağı oluşturmak için
Üzerinde veri menüsünde,'ı Show Data Sources.
İçinde Veri kaynakları penceresinde tıklatın Add New Data Source başlatmak için Data Source Configuration Wizard.
Seçin veritabanı , veri kaynağı türü seçin sayfa ve i İleri.
Üzerinde veri bağlantısı Seç aşağıdakilerden birini sayfa yapın:
Northwind örnek veritabanındaki veri bağlantısı aşağı açılan listede varsa, bunu seçin.
-veya-
Seçin Yeni bir bağlantı açmak için Ekle/Değiştir bağlantısı iletişim kutusu. Daha fazla bilgi için bkz. Ekle/Değiştir bağlantısı iletişim kutusunda (Genel).
Veritabanınız bir parola gerektiriyorsa, önemli verileri içerir ve i seçeneğini İleri.
Tıklatın İleri , bağlantı dizesini uygulama yapılandırma dosyasına kaydetmek sayfa.
Genişletme Tablo düğümünde veritabanı nesnelerini Seç sayfa.
Seçin müşterilerin ve siparişleri tablolar ve sonra Son.
NorthwindDataSet projenize eklenir ve tablolar görünür Veri kaynakları pencere.
Oluşturulacak denetimleri ayarlama
Bu izlenecek yolun veri içinde Customers tablo içinde olacak bir Ayrıntıları veri görüntülendiği her denetim düzeni. Verileri Orders tablo içinde olacak bir Kılavuz görüntülenme düzenini bir DataGridView denetim.
Veri kaynakları penceresinde açılan türü öğeler için ayarlamak için
Genişletme müşterilerin düğümünde Veri kaynakları pencere.
Denetimi değiştirme Müşteriler seçerek tek denetimleri tablo Ayrıntıları üzerindeki denetim listesinden Müşteriler düğüm. Daha fazla bilgi için bkz. Nasıl yapılır: veri kaynağı penceresinden sürükleyerek, oluşturulacak denetim kümesi.
Veriye bağlı Form oluşturma
Veriye bağlı denetimler öğeleri sürükleyerek oluşturabileceğiniz Veri kaynakları formunuza pencere.
Formdaki veriye bağlı denetimler oluşturmak için
Ana sürükleyin müşterilerin düğümden Veri kaynakları üzerine pencere Form1.
Araç şeridi ile birlikte formdaki veriye bağlı denetimler tanımlayıcı etiketlerle görünür (BindingNavigator) kayıtlar arasında gezinme için. A NorthwindDataSet, CustomersTableAdapter, BindingSource, ve BindingNavigator bileşen tepsisinde görünür.
İlgili sürükleyin siparişleri düğümden Veri kaynakları üzerine pencere Form1.
Not
İlgili siparişleri düğümü altında bulunan Faks sütun ve düğümünün bir alt düğümü müşterilerin düğüm.
A DataGridView denetim ve araç şeridi (BindingNavigator) formda görüntülenen kayıtlar arasında gezinme. Bir OrdersTableAdapter ve BindingSource bileşen tepsisinde görünür.
Veritabanını güncelleştirmek için kod ekleme
Veritabanı çağırarak güncelleştirmek Update yöntemleri müşterilerin ve siparişleri TableAdapters. Varsayılan olarak, bir olay işleyicisi BindingNavigator's kaydetmek güncelleştirmeleri veritabanına göndermek için formun kodunu düğmesi eklenir. Bu yordam, bilgi tutarlılığı hataları artırma olasılığını ortadan kaldırmak için doğru sırada güncelleştirmelerini göndermek için bu kodu değiştirir. Kod hata try-catch bloğu update çağrısında kaydırma tarafından işleme de uygular. Kodu uygulamanızın gereksinimlerine uyacak şekilde değiştirebilirsiniz.
Not
Netlik için Bu izlenecek yolda, bir hareket kullanmaz, ancak iki veya daha fazla ilişkili tabloları güncelleştiriyorsanız, işlem içindeki tüm güncelleştirme mantığı içermelidir.Bir hareket, herhangi bir değişiklik yapılıyor önce tüm ilgili değişiklikleri veritabanına başarılı olmasını sağlar bir işlemdir.Daha fazla bilgi için bkz. Performing Transactions.
Uygulama güncelleştirme mantığı eklemek için
Çift kaydetmek düğmesini BindingNavigator Kod Düzenleyicisi'ni açmak için bindingNavigatorSaveItem_Click olay işleyicisi.
Olay işleyicisi çağırmak için kod Değiştir Update ilgili TableAdapters yöntemleri. Aşağıdaki kod öncelikle her için güncelleştirilmiş bilgileri tutmak için üç geçici tablolar oluşturur DataRowState (Deleted, Added, ve Modified). Daha sonra güncelleştirmeleri doğru sırayla çalıştırılır. Kod aşağıdaki gibi görünmelidir:
Me.Validate() Me.OrdersBindingSource.EndEdit() Me.CustomersBindingSource.EndEdit() Dim deletedOrders As NorthwindDataSet.OrdersDataTable = CType( NorthwindDataSet.Orders.GetChanges(Data.DataRowState.Deleted), NorthwindDataSet.OrdersDataTable) Dim newOrders As NorthwindDataSet.OrdersDataTable = CType( NorthwindDataSet.Orders.GetChanges(Data.DataRowState.Added), NorthwindDataSet.OrdersDataTable) Dim modifiedOrders As NorthwindDataSet.OrdersDataTable = CType( NorthwindDataSet.Orders.GetChanges(Data.DataRowState.Modified), NorthwindDataSet.OrdersDataTable) Try ' Remove all deleted orders from the Orders table. If Not deletedOrders Is Nothing Then OrdersTableAdapter.Update(deletedOrders) End If ' Update the Customers table. CustomersTableAdapter.Update(NorthwindDataSet.Customers) ' Add new orders to the Orders table. If Not newOrders Is Nothing Then OrdersTableAdapter.Update(newOrders) End If ' Update all modified Orders. If Not modifiedOrders Is Nothing Then OrdersTableAdapter.Update(modifiedOrders) End If NorthwindDataSet.AcceptChanges() Catch ex As Exception MsgBox("Update failed") Finally If Not deletedOrders Is Nothing Then deletedOrders.Dispose() End If If Not newOrders Is Nothing Then newOrders.Dispose() End If If Not modifiedOrders Is Nothing Then modifiedOrders.Dispose() End If End Try
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 Etme
Uygulamayı test etmek için
F5'e basın.
Her tablodaki bir veya daha fazla kayıt verileri bazı değişiklikler yapın.
Press kaydetmek düğme.
Değişiklikleri kaydetmiş olduğunuzu doğrulamak için veritabanındaki değerleri denetleyin.
Sonraki Adımlar
Uygulama gereksinimlerinize bağlı olarak, Windows uygulamanızın veri ilişkili bir form oluşturduktan sonra gerçekleştirmek isteyebileceğiniz birkaç adım vardır. Bu yönergeyi yapabilir bazı geliştirmeler içerir:
Forma arama işlevselliği ekleme. Daha fazla bilgi için bkz. Nasıl yapılır: parametreli sorgu bir Windows Forms uygulaması ekleme.
Veritabanı nesne eklemek veya çıkartmak için veri kaynağı düzenleme. Daha fazla bilgi için bkz. Nasıl yapılır: bir Dataset Düzenle.
Ayrıca bkz.
Kavramlar
Visual Studio 2012'deki Veri Uygulaması Geliştirme Yenilikleri
Windows Forms denetimleri Visual Studio veri bağlama
Uygulamanız veri almaya hazırlanıyor
Visual Studio veri denetimleri