我有一个Windows应用程序,我有这个代码:
private void saveToDatabase_Click(object sender, EventArgs e)
{
// Save the DataSet Appointments table to the database.
KaznetiTableAdapter ta = new KaznetiTableAdapter();
ta.Adapter.RowUpdated += new OleDbRowUpdatedEventHandler(Adapter_RowUpdated);
ta.Update(kbDataSet.Kazneti);
}
void Adapter_RowUpdated(object sender,OdbcRowUpdatedEventArgs e)
{
if (e.RecordsAffected == 0)
{
MessageBox.Show(
e.Row["Adresa"].ToString()
"Optimistic Concurrency Error - Notes Not Saved",
MessageBoxButtons.OK,
MessageBoxIcon.Warning
);
e.Status = UpdateStatus.SkipCurrentRow;
}
}
我收到错误消息:
错误1“Adapter_RowUpdated”没有重载与委托“System.Data.OleDb.OleDbRowUpdatedEventHandler”的匹配
如果我在Odbc的粗体代码中更改OleDb,我又遇到了错误:
错误1无法将类型'System.Data.Odbc.OdbcRowUpdatedEventHandler'隐式转换为'System.Data.OleDb.OleDbRowUpdatedEventHandler'
答案 0 :(得分:2)
我猜您收到的错误消息非常明显:
无法将类型'System.Data.Odbc.OdbcRowUpdatedEventHandler'隐式转换为'System.Data.OleDb.OleDbRowUpdatedEventHandler'
所以,改变行
void Adapter_RowUpdated(object sender,OdbcRowUpdatedEventArgs e)
到
void Adapter_RowUpdated(object sender,OleDbRowUpdatedEventArgs e)
已编辑回复评论
然后我想你可以尝试这样的事情:
ta.Adapter.RowUpdated += (sender, e) =>
{
if (e.RecordsAffected == 0)
{
MessageBox.Show(
e.Row["Adresa"].ToString()
"Optimistic Concurrency Error - Notes Not Saved",
MessageBoxButtons.OK,
MessageBoxIcon.Warning );
e.Status = UpdateStatus.SkipCurrentRow;
}
}
答案 1 :(得分:1)
如果您使用OleDbDataAdapter
adapter.RowUpdating += new OleDbRowUpdatingEventHandler(OnRowUpdating);
将处理程序创建为
protected static void OnRowUpdating(object sender,
OleDbRowUpdatingEventArgs args)
{
// code
}
如果您使用SqlDataAdapter
adapter.RowUpdating += new SqlRowUpdatingEventHandler( OnRowUpdating );
将处理程序创建为
private static void OnRowUpdating(object sender, SqlRowUpdatingEventArgs e)
{
// code
}
您可以通过按Tab键两次键入+=
答案 2 :(得分:0)
我认为你的代表需要是静态的:
static void Adapter_RowUpdated(object sender,OdbcRowUpdatedEventArgs e)