http://topic.csdn.net/u/20071119/17/9316fdc5-5993-4720-a8e7-0d4ab5e28528.html
上面的问题就是我碰到的
我想操作的是利用SqlDataAdapter的几个Command属性(InsertCommand,UpdateCommand,DeleteCommand)来更新数据库
代码:
SqlConnection conn = new SqlConnection(@"Data Source=.\sqlexpress;Initial Catalog=newsystem;Integrated Security=True");
SqlDataAdapter da = new SqlDataAdapter("select * from comment", conn);
//这里的构造函数直接实例化了SelectCommand所需要的SqlCommand了吧?
DataSet ds = new DataSet("myds");
da.FillSchema(ds, SchemaType.Source, "comment");
da.Fill(ds, "comment");
//接下来设置InsertCommand所需要的SqlCommand
SqlCommand incmd=new SqlCommand("insert into comment (****) values(****)",conn);
da.InsertCommand = incmd;
//接下来是更新到数据库
da.Update(ds.Tables["comment"]);
ds.Tables["comment"].AcceptChanges();
可到数据库里一看,悲剧发生了:没有插入该条记录!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
网上一查:有些说要实例化SqlCommandBuilder,可我觉得我的InsertCommand所需要的SqlCommand都写好了,不需要这样吧!
SqlCommandBuilder好像只是适用于直接修改DataSet,由SqlCommandBuilder自动生成所需的SQL语句:
SqlConnection conn = new SqlConnection(@"Data Source=.\sqlexpress;Initial Catalog=newsystem;Integrated Security=True");
SqlDataAdapter da = new SqlDataAdapter("select * from comment", conn);
SqlCommandBuilder cmdb = new SqlCommandBuilder(da);
DataSet ds = new DataSet("myds");
da.FillSchema(ds, SchemaType.Source, "comment");
da.Fill(ds, "comment");
ds.Tables["comment"].Rows[5]["content"] = "Can you help me???";
da.Update(ds.Tables["comment"]);
ds.Tables["comment"].AcceptChanges();
慕后森