数据库不会使用 OleDbDataAdapter 更新 table

Database won't update a table using OleDbDataAdapter

private void button3_Click(object sender, EventArgs e)
{
    try
    {
        adapter = new OleDbDataAdapter("SELECT * FROM EMP", "Provider = OraOLEDB.Oracle;Driver=OraOLEDB.Oracle;Data Source=192.168.1.25/ORA8I;User id=INTERNSHIP;Password=123");
        cmd = new OleDbCommandBuilder(adapter);

        adapter.Update(ds, "EMP");
        MessageBox.Show("information updated", "Update", MessageBoxButtons.OK, MessageBoxIcon.Information);
   }
   catch
   {
        MessageBox.Show("There is nothing to update");
   }
}

注:使用oracle 11g数据库。 [=12c=] ds 在表单加载期间设置为 Dataset ds = new Dataset();

Error: Dynamic sql generation against select command.

但是我已经将电话设为我的主键

如果你想从数据库初始化一个数据集你应该使用OleDbDataAdapterclass的Fill方法而不是Update方法

adapter.Fill(ds);

错误提示需要指定要更新的table字段。最简单的方法是使用 OleDbCommandBuilder class.

生成更新语句
 adapter = new OleDbDataAdapter("SELECT * FROM EMP", "...");
 cmd = new OleDbCommandBuilder(adapter);
 adapter.UpdateCommand = cmd.GetUpdateCommand();
 adapter.Update(ds, "EMP");

构建器将生成更新语句并指定所有字段。

不要忘记处置您使用的资源(连接、适配器、命令等)。最后调用Dispose方法即可:

adapter.Dispose();

或使用using关键字

using (adapter = new OleDbDataAdapter("...", "..."))
{
}