كيفية القيام بما يلي: تحديث بيانات بواسطة محول الجدول استخدام
بعد البيانات في جهاز فئة البيانات تم تعديلها والتحقق من صحتها، قد تحتاج إلى يرسل البيانات المحدثة إلى قاعدة بيانات. لإرسال البيانات المعدلة إلى قاعدة بيانات، يمكنك استدعاء Updateأسلوب من من محول الجدول. محول's Updateأسلوب سيقوم تحديث جدول مفرد من بيانات وتنفيذ الصحيح أمر (إدراج أو UPDATE أو يحذف) استناداً RowStateلكل صف بيانات في جدول. عندما تقوم بحفظ البيانات في جداول مرتبطة، يوفر برنامج Visual Studio compتشغيلent TableAdapterManager الذي يساعد في تنفيذ حفظ الترتيب الصحيح إلى تشغيل cتشغيلstraints المفتاح الخارجي المعرفة في قاعدة بيانات. لمزيد من المعلومات، راجع تحديث هرمي نظرة عامة.
ملاحظة
لأن محاولة تحديث مصدر بيانات بالمحتويات الخاصة مجموعة بيانات يمكن أن تسبب أخطاء، يجب وضع تعليمات برمجية التي تستدعي محول's Updateأسلوب داخل try/ catchحظر.
إجراء الضبط إلى تختلف تحديث مصدر بيانات حسب احتياجات العمل، ولكن يجب أن تضمين تطبيق الخاص بك بالخطوات التالية:
يتصل بمحول Updateالأسلوب في try/ catchحظر.
إذا كان تم مصادفة استثناء، حدد موقع صف بيانات التي تسببت في الخطأ. لمزيد من المعلومات، راجع كيفية القيام بما يلي: حدد موقع صفوف خاص بأخطاء.
إصلاح المشكلة في صف بيانات (برمجياً إذا كان ذلك ممكناً، أو بواسطة عرض الصف غير صحيح إلى المستخدم للتعديل)، وثم reattempt تحديث ( HasErrors، GetErrors).
حفظ بيانات إلى قاعدة بيانات
استدعاء Updateأسلوب محول الجدول، بتمرير اسم جدول بيانات الذي يحتوي على قيم المراد كتابتها إلى قاعدة بيانات.
لتحديث قاعدة بيانات الذي يحتوي مجموعة بيانات باستخدام محول الجدول
قم بإحاطة بمحول Updateالأسلوب في try/ catchحظر. يوضح المثال التالي كيفية إلى محاولة تحديث من داخل على try/ catchحظر بالمحتويات Customersجدول في NorthwindDataSet.
Try Me.Validate() Me.CustomersBindingSource.EndEdit() Me.CustomersTableAdapter.Update(Me.NorthwindDataSet.Customers) MsgBox("Update successful") Catch ex As Exception MsgBox("Update failed") End Try
try { this.Validate(); this.customersBindingSource.EndEdit(); this.customersTableAdapter.Update(this.northwindDataSet.Customers); MessageBox.Show("Update successful"); } catch (System.Exception ex) { MessageBox.Show("Update failed"); }
التحديث الثاني ذات الصلة الجداول في فئة البيانات باستخدام محول الجدول
عندما تقوم بتحديث الجداول المرتبطة في فئة البيانات، يجب تحديث بالتسلسل الصحيح إلى تقليل فرصة انتهاك قيود تكامل مرجعي. ستتبع ترتيب التنفيذ الأمر أيضا الفهارس من DataRowCollectionفي فئة البيانات. لمنع أخطاء تكامل البيانات من raهوed، أفضل ممارسة هو لتحديث قاعدة بيانات في التسلسل التالي:
فرع جدول: يحذف السجلات.
أصل جدول: تحديث، أو إدراج و حذف السجلات.
فرع جدول: إدراج و تحديث السجلات.
ملاحظة
إذا كنت تقوم بتحديث أو أكثر مرتبط الجداول، يجب عليك تضمين الجميع منطق تحديث داخل معاملة. معاملة هو عملية ذات الصلة بالجميع التغييرات إلى قاعدة بيانات ويضمن نجاح قبل تنفيذ أية تغييرات. لمزيد من المعلومات، راجع Transactions and Concurrency (ADO.NET).
لتحديث اثنين تتعلق الجداول محول الجدول استخدام
قم بإنشاء بيانات مؤقتة ثلاثة الجداول للاحتفاظ بالسجلات المختلفة.
باستدعاء Updateأسلوب لكل مجموعة فرعية من صفوف من try/ catchحظر. في حالة حدوث أخطاء تحديث، يجب أن التفرع و حلها.
أكمل التغييرات إلى قاعدة بيانات.
التخلص من بيانات المؤقتة الجداول لتحرير موارد.
يوضح المثال التالي كيفية إلى تحديث مصدر بيانات بورقة العمل التي تحتوي على جداول مرتبطة.
Private Sub UpdateDB() Dim deletedChildRecords As NorthwindDataSet.OrdersDataTable = CType(NorthwindDataSet.Orders.GetChanges(Data.DataRowState.Deleted), NorthwindDataSet.OrdersDataTable) Dim newChildRecords As NorthwindDataSet.OrdersDataTable = CType(NorthwindDataSet.Orders.GetChanges(Data.DataRowState.Added), NorthwindDataSet.OrdersDataTable) Dim modifiedChildRecords As NorthwindDataSet.OrdersDataTable = CType(NorthwindDataSet.Orders.GetChanges(Data.DataRowState.Modified), NorthwindDataSet.OrdersDataTable) Try If deletedChildRecords IsNot Nothing Then OrdersTableAdapter.Update(deletedChildRecords) End If CustomersTableAdapter.Update(NorthwindDataSet.Customers) If newChildRecords IsNot Nothing Then OrdersTableAdapter.Update(newChildRecords) End If If modifiedChildRecords IsNot Nothing Then OrdersTableAdapter.Update(modifiedChildRecords) End If NorthwindDataSet.AcceptChanges() Catch ex As Exception MessageBox.Show("An error occurred during the update process") ' Add code to handle error here. Finally If deletedChildRecords IsNot Nothing Then deletedChildRecords.Dispose() End If If newChildRecords IsNot Nothing Then newChildRecords.Dispose() End If If modifiedChildRecords IsNot Nothing Then modifiedChildRecords.Dispose() End If End Try End Sub
void UpdateDB() { NorthwindDataSet.OrdersDataTable deletedChildRecords = (NorthwindDataSet.OrdersDataTable)northwindDataSet.Orders.GetChanges(DataRowState.Deleted); NorthwindDataSet.OrdersDataTable newChildRecords = (NorthwindDataSet.OrdersDataTable)northwindDataSet.Orders.GetChanges(DataRowState.Added); NorthwindDataSet.OrdersDataTable modifiedChildRecords = (NorthwindDataSet.OrdersDataTable)northwindDataSet.Orders.GetChanges(DataRowState.Modified); try { if (deletedChildRecords != null) { ordersTableAdapter.Update(deletedChildRecords); } customersTableAdapter.Update(northwindDataSet.Customers); if (newChildRecords != null) { ordersTableAdapter.Update(newChildRecords); } if (modifiedChildRecords != null) { ordersTableAdapter.Update(modifiedChildRecords); } northwindDataSet.AcceptChanges(); } catch (Exception ex) { MessageBox.Show("An error occurred during the update process"); // Add code to handle error here. } finally { if (deletedChildRecords != null) { deletedChildRecords.Dispose(); } if (newChildRecords != null) { newChildRecords.Dispose(); } if (modifiedChildRecords != null) { modifiedChildRecords.Dispose(); } } }
راجع أيضًا:
المبادئ
ربط عناصر تحكم النماذج Windows إلى بيانات في Visual Studio
قم بربط عناصر التحكم إلى البيانات في Visual Studio
موارد أخرى
الإرشادات التفصيلية الخاصة بالبيانات
الاتصال إلى البيانات في Visual Studio
قم بإعداد تطبيق الخاص بك إلى تلقي بيانات
إحضار بيانات في تطبيق الخاص بك