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数据库。 Dataset
ds在表单加载期间设置为Dataset ds = new Dataset();
错误:针对select命令生成动态sql。
但我已将 phno设为我的主键。
答案 0 :(得分:1)
如果要从数据库初始化数据集,则应使用OleDbDataAdapter
类的Fill
方法而不是Update
方法
adapter.Fill(ds);
错误告诉您需要指定要更新的表的字段。最简单的方法是使用OleDbCommandBuilder
类生成更新语句。
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("...", "..."))
{
}