这SqlDataAdapter的update难道就这么难用,这样的代码没有错啊,怎么还是更新不了?
运行程序不报错,但就是没有任何的插入,更新,删除的动作,也就是数据库啥都没变DataSet ds=new DataSet();
ds=GetDataSet();//得到一个改过的DataSet
ds.Tables["test"].PrimaryKey=new DataColumn[]{ds.Tables["test"].Columns["id"]};DataSet catDS=new DataSet();
SqlConnection conn=new SqlConnection();
conn.Open();SqlDataAdapter cmd=new SqlDataAdapter("SELECT id, name FROM test", conn);
catDS.Tables["test"].PrimaryKey=new DataColumn[]{catDS.Tables["test"].Columns["id"]};SqlCommandBuilder scb=new SqlCommandBuilder(cmd);catDS.Merge(ds);
cmd.Update(catDS,"test");
运行程序不报错,但就是没有任何的插入,更新,删除的动作,也就是数据库啥都没变DataSet ds=new DataSet();
ds=GetDataSet();//得到一个改过的DataSet
ds.Tables["test"].PrimaryKey=new DataColumn[]{ds.Tables["test"].Columns["id"]};DataSet catDS=new DataSet();
SqlConnection conn=new SqlConnection();
conn.Open();SqlDataAdapter cmd=new SqlDataAdapter("SELECT id, name FROM test", conn);
catDS.Tables["test"].PrimaryKey=new DataColumn[]{catDS.Tables["test"].Columns["id"]};SqlCommandBuilder scb=new SqlCommandBuilder(cmd);catDS.Merge(ds);
cmd.Update(catDS,"test");
ds=GetDataSet();//得到一个改过的DataSet
ds.Tables["test"].PrimaryKey=new DataColumn[]{ds.Tables["test"].Columns["id"]};DataSet catDS=new DataSet();
SqlConnection conn=new SqlConnection();
conn.Open();SqlDataAdapter cmd=new SqlDataAdapter("SELECT id, name FROM test", conn);
catDS.Tables["test"].PrimaryKey=new DataColumn[]{catDS.Tables["test"].Columns["id"]};
cmd.Fill(catDS);
SqlCommandBuilder scb=new SqlCommandBuilder(cmd);catDS.Merge(ds);
cmd.Update(catDS,"test");
cmd.TableMappings.Add("test","test");
后面的参数是你数据库的表名,前面的是指dataset中的表名。
DataSet catDS = new DataSet();
....
catDS.Merge(ds); //这里,你确认表还叫"test"吗,应该叫“table”在update之前加一个
cmd.TableMappings.Add("Table","test");
后面的参数是你数据库的表名,前面的是指dataset中的表名。再试。
你可以参考我写的一相数据更新器类
http://spaces.msn.com/members/weisunding/Blog/cns!1p7VkOoAZPuMFtn9p9N4dWNw!106.entry
catDS.Merge(ds); //这里,你确认表还叫"test"吗,应该叫“table”我输出catDS的表名,是叫test
这句加上也不管用?
我用都行了,你看我这个程序,虽然简单点,但原理一样的
SqlDataAdapter adapter=new SqlDataAdapter(Sql,thisConnection);
DataSet data=new DataSet();
SqlCommandBuilder builder=new SqlCommandBuilder(adapter);
adapter.Fill(data,"Customers");
data.Tablese["Customers"].Rows[0]["CompanyName"]="CompanyName1";
………………(修改DataSet的内容)adapter.Update(data,"Customers");就完工了
现在看了头都大了
http://blog.csdn.net/zhzuo/archive/2004/08/06/67037.aspx
CmdBudr = new SqlCommandBuilder( cmd);