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";做了修改,为什么还要用上面那几句呢???
因为用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");
所以,要写这三句话。
一个是更新内存数据,一个是更新数据库数据。