c#用SqlCommandBuilder把DataSet更新到数据库?为什么没起效,求大神。
SqlDataAdaptersda=newSqlDataAdapter("select*fromTittle",conn);//sda执行的sql语句、数据库连接Data...
SqlDataAdapter sda = new SqlDataAdapter("select * from Tittle", conn);//sda执行的sql语句、数据库连接
DataSet ds = new DataSet();
sda.Fill(ds); //往DataSet对象里填充数据
SqlCommand cmd = new SqlCommand("TRUNCATE Table Tittle", conn) //删除整个表
//cmd.ExecuteNonQuery(); //这句可以把数据库也更新了。
SqlCommandBuilder scb = new SqlCommandBuilder(sda);
sda.UpdateCommand = scb.GetUpdateCommand();
sda.Update(ds);
执行删除操作后,为什么数据库里没被更新啊?
我用cmd.ExecuteNonQuery(); 这句的话可以把数据库也更新了。但我现在要用SqlCommandBuilder来。 展开
DataSet ds = new DataSet();
sda.Fill(ds); //往DataSet对象里填充数据
SqlCommand cmd = new SqlCommand("TRUNCATE Table Tittle", conn) //删除整个表
//cmd.ExecuteNonQuery(); //这句可以把数据库也更新了。
SqlCommandBuilder scb = new SqlCommandBuilder(sda);
sda.UpdateCommand = scb.GetUpdateCommand();
sda.Update(ds);
执行删除操作后,为什么数据库里没被更新啊?
我用cmd.ExecuteNonQuery(); 这句的话可以把数据库也更新了。但我现在要用SqlCommandBuilder来。 展开
3个回答
展开全部
你有个地方混淆了,使用SqlCommandBuilder的好处在于你对DataSet(注意是内存里)的修改(比如,你遍历ds里的Tittle表修改某些字段,或者绑定到datagridview修改)可以通过Update自动更新到数据库。但不包括你其他的SqlCommand语句的增删改。
更多追问追答
追问
dt.Rows.Remove(dt.Rows[0]);//删除DataTable对象dt里的第一行SqlCommandBuilder scb = new SqlCommandBuilder(sda);
sda.UpdateCommand = scb.GetUpdateCommand();
sda.Update(dt);
sql里一样没看见被删除
追答
那你试试把Remove方法换成delete方法呢,还有最后要acceptchanges。另外数据库里要有主键。
展开全部
TRUNCATE Table 删除表中的所有行,但是表的结构、列、约束、索引等不会被改动。TRUNCATE Table不能用于有外键约束引用的表,这种情况下,需要使用delete语句。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
SqlCommandBuilder 是为 SqlDataAdapter 自动产生SQL语句的来批量的更新DataSet的。你概念上理解有误
追问
我试过了, SqlCommandBuilder确实是根据SqlDataAdapter 对象的sql操作语句 来更新的。
唉,我是被垃圾书给害了,我照着弄的,它上面的sql语句就是写 select。晕了我几个小时。
《c#从入门到精通》 明日科技 编著。。。。。超级垃圾啊。
追答
当你不为SqlDataAdapter 指定SqlCommandBuilder的时候,你就必须手动为
SqlDataAdapter 写好 InsertCommand,DeleteCommand,UpdateCommand语句,否则是无法调用Update方法来更新的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |