使用dataset更新行后用commandbuilder不能更新;(附源码和错误信息,请高手帮忙解答!)

glgzx 2005-08-21 11:39:23
未处理的“System.InvalidOperationException”类型的异常出现在 system.data.dll 中。

其他信息: 对于不返回任何键列信息的 SelectCommand 不支持 UpdateCommand 的动态 SQL 生成。
*************************************
上面为报错信息;下面为源代码
*************************************
SqlConnection thisConnection=new SqlConnection( @"Server=30.5.20.15;"+
"user id=myuser;"+
"password=myok;"+
"Connection Timeout=10;"+
"Database=shly;");
SqlDataAdapter da =new SqlDataAdapter ();
da.SelectCommand =new SqlCommand ("select * from mytable",thisConnection);
DataSet ds =new DataSet ();
da.Fill (ds,"mytable");
DataTable dt=ds.Tables ["mytable"];
dt.Rows [0]["firstName"]="JuLian";
SqlCommandBuilder sqlCb=new SqlCommandBuilder (da);
da.Update (ds,"mytable");
...全文
214 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
glgzx 2005-08-22
  • 打赏
  • 举报
回复
我实现插入操作时工作正常;不知道更新操作为什么报这个错误
pupo 2005-08-22
  • 打赏
  • 举报
回复
使用SqlCommandBuilder ,数据表必须要设置主键才可以更新
zeusvenus 2005-08-22
  • 打赏
  • 举报
回复
这样有时候有问题,
楼主定义了da及其select命令方法,但是没有定义update语句方法。
把你update语句写上去写全,别用da.Update (ds,"mytable");用类似SqlupdateCommand.ExecuteNonQuery();之类的试试。
lyb_abiandbel 2005-08-22
  • 打赏
  • 举报
回复
首先,调用update,你的SqlDataAdapter就必须要有updatecommand语句,
错误提示已经告诉你了,“对于不返回任何键列信息的 SelectCommand 不支持 UpdateCommand 的动态 SQL 生成”,因为数据库中你要更新的表没有主键,所以并没有updatecommand语句,
手动添加updatecommand语句,或者再数据库中添加主键,然后重新建立SqlDataAdapter,生成updatecommand语句。
glgzx 2005-08-22
  • 打赏
  • 举报
回复
我已经设置了主键,不然我插入insert为什么会成功呢,另我的主键是中文字段,会有影响?
glgzx 2005-08-21
  • 打赏
  • 举报
回复
确认,我表中有很多行
TechEye 2005-08-21
  • 打赏
  • 举报
回复
dt.Rows [0]["firstName"]="JuLian";
这句,你确认dt.Rows.Count > 0 ??

111,097

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧