怎样将DataSet中修改(增加,删除,修改)过的记录更新进数据库中

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

主题:怎样将DataSet中修改(增加,删除,修改)过的记录更新进数据库中??用DataGrid显示的
private System.Data.OracleClient.OracleCommand oracleSelectCommand1;
private System.Data.OracleClient.OracleCommand oracleInsertCommand1;
private System.Data.OracleClient.OracleCommand oracleUpdateCommand1;
private System.Data.OracleClient.OracleCommand oracleDeleteCommand1;

创建DeleteCommand 、InsertCommand 、UpdateCommand 命令
用SqlCommandBuilder取命令。

你最好在增删改操作的button事件退出之前,再LoadData();
LoadData()方法的实现主要的就是:select * from TableName


在OracleDataAdapter da = new OracleDataAdapter(sele,conn);后加一句
OracleCommandBuilder cb = new OracleCommandBuilder(da);

自定义以下几个属性也可以

OracleDataAdapter.InsertCommand
OracleDataAdapter.DeleteCommand
OracleDataAdapter.UpdateCommand

我觉得:
直接用适配器更新即可
如 : sda.Update( DataSet.GetChanges() , "{要更新的表名}" );

因适配器的机制就是根据数据表的主键来更新的。


对于问题2:删除
如果不用下面三行代码,就不能删除数据库中的相应记录
string dele = "delete from TEST_DEPT1 where DEPTNO=" + strDeptNo;
OracleCommand cmd = new OracleCommand(dele,conn);
cmd.ExecuteNonQuery();






1。增加
string source = "user id=spm;data source=spmdb;password=spm";
string sele = "select * from TEST_DEPT1";
、、、、、、
OracleConnection conn = new OracleConnection(source);
conn.Open();
OracleDataAdapter da = new OracleDataAdapter(sele,conn);

DataSet ds = new DataSet();
da.Fill(ds,"DEPT1");

DataRow row = ds.Tables["DEPT1"].NewRow();
row[0] = Convert.ToInt32(textBox1.Text.Trim());
row[1] = textBox2.Text.Trim();
ds.Tables["DEPT1"].Rows.Add(row);

dataGrid1.SetDataBinding(ds,"DEPT1");
// da.Update(ds,"DEPT1"); 用这种方式有时侯好象不行的?有时候行??
conn.Close();
、、、、、

2。删除
string source = "user id=spm;data source=spmdb;password=spm";
string sele = "select * from Test_Dept1";
string strDeptNo;
int i;

OracleConnection conn = new OracleConnection(source);
conn.Open();
OracleDataAdapter da = new OracleDataAdapter(sele,source);

DataSet ds = new DataSet();
da.Fill(ds,"Dept1");
i = dataGrid1.CurrentRowIndex ;
strDeptNo = ds.Tables["Dept1"].Rows[i]["DEPTNO"].ToString();
ds.Tables["Dept1"].Rows[i].Delete();
ds.AcceptChanges();
da.Update(ds,"Dept1");
dataGrid1.SetDataBinding(ds,"Dept1");

//如果不用下面三行代码,怎么样将DataSet中删除的记录更新进数据库中?
string dele = "delete from TEST_DEPT1 where DEPTNO=" + strDeptNo;
OracleCommand cmd = new OracleCommand(dele,conn);
cmd.ExecuteNonQuery();

conn.Close();
、、、、、、

3。对于简单的修改(增加,删除,修改)不用DataSet应该简单些吧?即用SQL直接对数据库操作
谈谈你的看法:什么时候用DataSet

?什么时候用SQL直接对数据库操作?
string source = "user id=spm;data source=spmdb;password=spm";
string insert = "insert into TEST_DEPT (DEPTNO,DNAME) values (90,'ee')";
string sele = "select * from TEST_DEPT";
、、、、、、
OracleConnection conn = new OracleConnection(source);
conn.Open();
OracleCommand cmd = new OracleCommand(insert,conn);
cmd.ExecuteNonQuery();

OracleDataAdapter da = new OracleDataAdapter(sele,conn);

DataSet ds = new DataSet();
da.Fill(ds,"DEPT");
dataGrid1.DataSource = ds.Tables["DEPT"];
conn.Close();

相关文档
最新文档