سؤال

هل من الممكن في C # لاستخدام OleDbAdapter واستخدام أسلوب التحديث من أجل مجموعة بيانات عندما يحتوي الجدول رقم المفتاح الأساسي وكيف يمكن أن أفعل هذا؟

هل كانت مفيدة؟

المحلول

وإليك مثال في VB، والتي قد تعطيك فكرة عامة.

نصائح أخرى

يمكنك الحصول دائما على التوالي باستخدام myTable.Select("myColumn Like 'unique value'");

هل قمت بإضافة المفتاح الأساسي؟

ودون نوع من هوية فريدة من نوعها (والتي يجب أن تكون PK) ثم ليست هناك طريقة لمعرفة ما الصف إلى تحديث.

وحصلت نفس المشكلة عندما كنت قاعدة بيانات طرف ثالث. لم يكن لديهم المفاتيح الأساسية في قاعدة البيانات الخاصة بهم، ولكن لديهم مجموعة من الحقول التي هي فريدة من نوعها.

أولا، إنشاء DataTable و، وملء مع نتيجة الاستعلام باستخدام حالة فريدة من نوعها.

DataTable dt = new DataTable();
OleDbDataAdapter adapter = new OleDbDataAdapter();
adapter.SelectCommand = new OleDbCommand(sqlstring, ACCESS_dbConnection);
adapter.Fill(dt);

والثانية، يحل محل س مع البيانات التي تم تحديثها من قبل العمود.

foreach (DataColumn col in datarow.Columns)
{
    Debug.WriteLine(col.ColumnName);
    ds.Rows[0][col.ColumnName] = datarow.Rows[0][col.ColumnName];
}

وبعد ذلك، يمكنك تحديث.

OleDbCommandBuilder cb = new OleDbCommandBuilder(adapter);
adapter.UpdateCommand = cb.GetUpdateCommand();
adapter.InsertCommand = cb.GetInsertCommand();
adapter.Update(ds);

وهذا يعمل بالنسبة لي.

وتفعل ذلك فقط عندما كنت متأكدا من وجود واحد على بيانات طلبات واحد فقط. إذا لم يكن كذلك، قد ترغب في إضافة بعض "لو" فحص

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top