مشاركة عبر


كيفية القيام بما يلي: تحديث بيانات بواسطة محول الجدول استخدام

بعد البيانات في جهاز فئة البيانات تم تعديلها والتحقق من صحتها، قد تحتاج إلى يرسل البيانات المحدثة إلى قاعدة بيانات. لإرسال البيانات المعدلة إلى قاعدة بيانات، يمكنك استدعاء Updateأسلوب من من محول الجدول. محول's Updateأسلوب سيقوم تحديث جدول مفرد من بيانات وتنفيذ الصحيح أمر (إدراج أو UPDATE أو يحذف) استناداً RowStateلكل صف بيانات في جدول. عندما تقوم بحفظ البيانات في جداول مرتبطة، يوفر برنامج ‏‫Visual Studio compتشغيلent TableAdapterManager الذي يساعد في تنفيذ حفظ الترتيب الصحيح إلى تشغيل cتشغيلstraints المفتاح الخارجي المعرفة في قاعدة بيانات. لمزيد من المعلومات، راجع تحديث هرمي نظرة عامة.

ملاحظة

لأن محاولة تحديث مصدر بيانات بالمحتويات الخاصة مجموعة بيانات يمكن أن تسبب أخطاء، يجب وضع تعليمات برمجية التي تستدعي محول's Updateأسلوب داخل try/ catchحظر.

إجراء الضبط إلى تختلف تحديث مصدر بيانات حسب احتياجات العمل، ولكن يجب أن تضمين تطبيق الخاص بك بالخطوات التالية:

  1. يتصل بمحول Updateالأسلوب في try/ catchحظر.

  2. إذا كان تم مصادفة استثناء، حدد موقع صف بيانات التي تسببت في الخطأ. لمزيد من المعلومات، راجع كيفية القيام بما يلي: حدد موقع صفوف خاص بأخطاء.

  3. إصلاح المشكلة في صف بيانات (برمجياً إذا كان ذلك ممكناً، أو بواسطة عرض الصف غير صحيح إلى المستخدم للتعديل)، وثم 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، أفضل ممارسة هو لتحديث قاعدة بيانات في التسلسل التالي:

  1. فرع جدول: يحذف السجلات.

  2. أصل جدول: تحديث، أو إدراج و حذف السجلات.

  3. فرع جدول: إدراج و تحديث السجلات.

    ملاحظة

    إذا كنت تقوم بتحديث أو أكثر مرتبط الجداول، يجب عليك تضمين الجميع منطق تحديث داخل معاملة. معاملة هو عملية ذات الصلة بالجميع التغييرات إلى قاعدة بيانات ويضمن نجاح قبل تنفيذ أية تغييرات. لمزيد من المعلومات، راجع Transactions and Concurrency (ADO.NET).

لتحديث اثنين تتعلق الجداول محول الجدول استخدام

  1. قم بإنشاء بيانات مؤقتة ثلاثة الجداول للاحتفاظ بالسجلات المختلفة.

  2. باستدعاء Updateأسلوب لكل مجموعة فرعية من صفوف من try/ catchحظر. في حالة حدوث أخطاء تحديث، يجب أن التفرع و حلها.

  3. أكمل التغييرات إلى قاعدة بيانات.

  4. التخلص من بيانات المؤقتة الجداول لتحرير موارد.

    يوضح المثال التالي كيفية إلى تحديث مصدر بيانات بورقة العمل التي تحتوي على جداول مرتبطة.

    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

قم بإعداد تطبيق الخاص بك إلى تلقي بيانات

إحضار بيانات في تطبيق الخاص بك

‏‏تحرير بيانات في تطبيق الخاص بك

التحقق من صحة بيانات

حفظ بيانات