数据库不会使用 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.
但是我已经将电话设为我的主键。
如果你想从数据库初始化一个数据集你应该使用OleDbDataAdapter
class的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("...", "..."))
{
}
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.
但是我已经将电话设为我的主键。
如果你想从数据库初始化一个数据集你应该使用OleDbDataAdapter
class的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("...", "..."))
{
}