导入数据行后(importrow)为什么不能更新到数据库(在线)
SqlDataAdapter da = new SqlDataAdapter("select * from fzsdb", datacn.cn);
SqlCommandBuilder scb = new SqlCommandBuilder(da);
DataSet dsa = new DataSet();
datacn.cn.Close();
da.Fill(dsa, "fzsdb");
DataTable fzsdb = dsa.Tables["fzsdb"];
foreach (DataRow dr in dt.Rows)
{
fzsdb.ImportRow(dr);
}
fzsdb.AcceptChanges();
a.Update(dsa.Tables["fzsdb"] );
[解决办法]
具体代码应该是下面这样吧:
SqlDataAdapter da = new SqlDataAdapter("select * from fzsdb", datacn.cn);
SqlCommandBuilder scb = new SqlCommandBuilder(da);
DataSet dsa = new DataSet();
datacn.cn.Open();
da.Fill(dsa, "fzsdb");
DataTable fzsdb = dsa.Tables["fzsdb"];
foreach (DataRow dr in dt.Rows)
{
fzsdb.ImportRow(dr)
}
fzsdb.AcceptChanges();
da.Update(fzsdb );
你这样只是更新了DataTable中的数据而已了,此时你还需要把DataTable的数据更新到数据库中的。
具体可以参考下下面的文章:
http://msdn.microsoft.com/zh-cn/library/z1z2bkx2(v=vs.80).aspx
http://msdn.microsoft.com/zh-cn/library/33y2221y(v=vs.80).aspx
[解决办法]
你需要为SqlCommandBuilder 添加UPDATE的COMMAND对象
[解决办法]
using (SqlCommand comm = conn.CreateCommand())
{
comm.CommandText = "select * from fzsdb";
SqlDataAdapter da = new SqlDataAdapter(comm);
SqlCommandBuilder scb = new SqlCommandBuilder(da);
DataSet dsa = new DataSet();
datacn.cn.Close();
da.Fill(dsa, "fzsdb");
DataTable fzsdb = dsa.Tables["fzsdb"];
foreach (DataRow dr in dt.Rows)
{
fzsdb.ImportRow(dr);
}
fzsdb.AcceptChanges();
da.Update(dsa.Tables["fzsdb"] );
}
[解决办法]
注意 此表 fzsdb 是否有主键,如果没有下面将不能执行。
SqlDataAdapter da = new SqlDataAdapter("select * from fzsdb", datacn.cn);
SqlCommandBuilder scb = new SqlCommandBuilder(da);
DataSet dsa = new DataSet();
//datacn.cn.Close();//这个关太早了吧。
da.Fill(dsa, "fzsdb");
DataTable fzsdb = dsa.Tables["fzsdb"];
foreach (DataRow dr in dt.Rows)
{
fzsdb.ImportRow(dr);
}
a.Update(dsa.Tables["fzsdb"] );
datacn.cn.Close();//这句也置后
fzsdb.AcceptChanges(); //这句要放后面。