SqlDataAdapter的问题

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";做了修改,为什么还要用上面那几句呢???


函数式编程
浏览 400回答 2
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"); 所以,要写这三句话。

陪伴而非守候

一个是更新内存数据,一个是更新数据库数据。
打开App,查看更多内容
随时随地看视频慕课网APP