strange problem about undateCommand

realxjl 2004-11-12 06:01:43
用VB.net 联sql server2000时,发生如下错误

System.InvalidOperationException: 对于不返回任何键列信息的 SelectCommand 不支持 UpdateCommand 的动态 SQL 生成。
at System.Data.Common.CommandBuilder.BuildUpdateCommand(DataTableMapping mappings, DataRow dataRow)
at System.Data.SqlClient.SqlCommandBuilder.GetUpdateCommand()
但当所连数据库换成另一个内容相同,只是备份又恢复一下的数据库时,这个错误就没有了,而且项目中的所有updateCommand 都有这个问题,所以怀疑和数据库有关,不知是什么原因,求教了
...全文
68 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
realxjl 2004-11-15
  • 打赏
  • 举报
回复
各位的方法我都试了,我用的数据处理数据,都写sql实在麻烦,很多处都要改。在另一个结构相同的数据库里怎么就好用呢?而且没定义主键的都好用
Montaque 2004-11-13
  • 打赏
  • 举报
回复
set the insertcommand,deletecommand and deletecommand of your dataadapter.
efpsy 2004-11-13
  • 打赏
  • 举报
回复
System.Data.Common.CommandBuilder.BuildUpdateCommand类用于创建不用显示添加参数的自动的用于数据库更新操作的语句,但使用上有一些限制,如下:
命令对象返回的数据集必须来自一个数据表;
必须显示设置命令对象的selectcommand属性;
命令对象返回的数据集必须有主键或有唯一列;
如果命令对象对应的selectconmand属性发生改变必须其refresh方法刷新其对应的数据集的结构。
不过建议你最好显示创建命令对象进行更新操作。
EricBai 2004-11-13
  • 打赏
  • 举报
回复
"但当所连数据库换成另一个内容相同,只是备份又恢复一下的数据库时"
是什么意思啊?是将同一个名字的数据库恢复一下还是转向另一个结构相同的数据库阿?

是不是update时候的数据有问题啊,
不建议使用.net自动生成的连接向导,不如自己写连接代码,问题比较容易发现。
OneDotRed 2004-11-13
  • 打赏
  • 举报
回复
要是SQLCommandBuilder自动生成Command对象,表必须有主键,
例如

dim sda as new SQLDataAdaper( "SELECT * FROM Customers" , cn )
sda.MissingSchemaAction = MissingSchemaAction.AddWithKey '这一句一定要加上哦
dim scb as new SqlCommandBuilder( sda )
..


sda.Update("xxx");
youlongzaitian 2004-11-12
  • 打赏
  • 举报
回复
这个问题还真没有遇到过,学习学习···

16,554

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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