首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

导入数据行后(importrow)为啥不能更新到数据库(在线)

2013-06-19 
导入数据行后(importrow)为什么不能更新到数据库(在线)SqlDataAdapter da new SqlDataAdapter(select *

导入数据行后(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();  //这句要放后面。


热点排行