为了账号安全,请及时绑定邮箱和手机立即绑定

SqlDataAdapter的问题

SqlDataAdapter的问题

函数式编程 2018-11-14 05:02:45
SqlConnection conn = new SqlConnection(str);    SqlDataAdapter da = new SqlDataAdapter("SELECT order_id, contract FROM linhai", conn);    DataSet ds = new DataSet();    da.Fill(ds, "linhai");    da.UpdateCommand = new SqlCommand("UPDATE linhai SET contract = @contract WHERE order_id = @order_id" , conn);    da.UpdateCommand.Parameters.Add("@contract", SqlDbType.NVarChar, 15, "contract");    da.UpdateCommand.Parameters.Add("@order_id", SqlDbType.NVarChar, 15, "order_id");    ds.Tables["linhai"].Rows[0]["contract"] = "PPP";    da.Update(ds.Tables[0]); 不知道为什么要写这几句:   da.UpdateCommand = new SqlCommand("UPDATE linhai SET contract = @contract WHERE order_id = @order_id" , conn);    da.UpdateCommand.Parameters.Add("@contract", SqlDbType.NVarChar, 15, "contract");    da.UpdateCommand.Parameters.Add("@order_id", SqlDbType.NVarChar, 15, "order_id");开始填充了一个ds后 用ds.Tables["linhai"].Rows[0]["contract"] = "PPP";做了修改,为什么还要用上面那几句呢???
查看完整描述

2 回答

?
湖上湖

TA贡献2003条经验 获得超2个赞

因为用ds.Tables["linhai"].Rows[0]["contract"] = "PPP";做了修改 只是修改了内存中的数据,没有修改数据库中的数据。

所以要用 da.Update(ds.Tables[0]); 来更新数据库中的数据。

而 da.Update(ds.Tables[0]); 这一句要正常执行的话,必须要写下面这三句话。
da.UpdateCommand = new SqlCommand("UPDATE linhai SET contract = @contract WHERE order_id = @order_id" , conn);

    da.UpdateCommand.Parameters.Add("@contract", SqlDbType.NVarChar, 15, "contract");
    da.UpdateCommand.Parameters.Add("@order_id", SqlDbType.NVarChar, 15, "order_id");

 

所以,要写这三句话。


查看完整回答
反对 回复 2018-11-20
?
陪伴而非守候

TA贡献1757条经验 获得超8个赞

一个是更新内存数据,一个是更新数据库数据。

查看完整回答
反对 回复 2018-11-20
  • 2 回答
  • 0 关注
  • 383 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信