当前位置:首页 > 技术心得 > 正文内容

对于不返回任何键列信息的 selectcommand 不支持 updatecommand 的动态 sql 生成

xjtudll4年前 (2022-04-05)技术心得5220

https://www.cnblogs.com/xuqiang/archive/2010/03/07/1953720.html

大家知道,DataSet保存的数据是位于服务器内存里面的原数据库的“副本”。所以用DataSet更新数据的过程就是先对“副本”进行更新,然后

在将“原本”更新,按照我的理解就是把“原本”覆盖掉。具体到过程,首先是要找到需要更新的行,然后赋新值,最后更新原数据库。

要找到需要修改的行,比较方便的做法就是根据记录中的某个值进行查找,这样比用“列号”“行号”什么的方便多了。要做到这一点,首先就是要

给数据库指定一个主键,然后即可按照主键进行查找。要注意的是这个主键必须要是在程序中指定的,并且这个主键不一定和你数据库原来有的主

键一样。

然后就是最后的更新,当然是用DataAdapter的Update()方法借助CommandBuilder来实现,要注意的是,如果你的数据库一开始没有定义

主键,那进行更新的时候会出错,返回的错误将是“对于不返回任何键列信息的 SelectCommand 不支持 UpdateCommand 的动态 SQL

生成。”这是因为我们用的Update()实际上是通过CommandBuilder动态生成sql语句,然后才进行的数据库操作。

但如果你在一开始创建DataAdapter时的那个sql语句没有包含有主键的列的话,那CommandBuilder将不会发生作用。这一点是必须要牢记的。

扫描二维码推送至手机访问。

版权声明:本文由鸟的天空发布,如需转载请注明出处。

本文链接:http://xjtudll.cn/Exp/640/

标签: SQL
分享给朋友:

“对于不返回任何键列信息的 selectcommand 不支持 updatecommand 的动态 sql 生成” 的相关文章

mysql服务无法启动 服务没有报告任何错误

mysql服务无法启动 服务没有报告任何错误

参考资料: http://bbs.csdn.net/topics/391851148 问题描述: 使用net start mysql启动MySQL服务时,提示:MySQL服务无法启动,服务没有报告任何错误。如下图所示: 可能原因: data目录里已经有数据里,所以有冲突。 解决办法: 1、删...

PowerPCB5.01安装

PowerPCB5.01安装

软件下载地址:http://www.mcu123.com/news/Soft/embsof/pcb/200609/104.html我目前就是用的这个,暂时没发现什么问题。1、安装时选择“Node-locked with FLEXid Key(teal)”  ...

位运算——交换两个数

交换两个数 交换两个数相信很多人天天写过,我也相信你每次都会使用一个额外来变量来辅助交换,例如,我们要交换 x 与 y 值,传统代码如下 int tmp = x; x = y; y = tmp; 这样写有问题吗?没问题,通俗易懂,万一哪天有人要为难你,**不允许...

电路板上的“黑疙瘩”,里面究竟有什么?

电路板上的“黑疙瘩”,里面究竟有什么?

现在很多日用电子产品都非常便宜,比如计算器、遥控器之类的,它们实在太便宜了,以至于成本控制的过程不允许让生产厂商将每一片芯片都封装好,于是“牛屎片”便产生了。 它的学名叫做COB(Chip On Board),你一定在很多便宜的电子产品中见到它。这种封装形式采用黑色的树脂将...

布丁软件引起的桌面闪烁

问题描述: 进入桌面后,屏幕闪烁。 查找到系统日志: 错误应用程序名称: explorer.exe,版本: 6.3.9600.18231,时间戳: 0x56b8c9f1 错误模块名称: PDZipMenu64.dll,版本: 1.4.3.11014,时间戳: 0x5da4349a 异常代码: 0xc...

布丁软件引起的桌面闪烁

问题描述: 进入桌面后,屏幕闪烁。 查找到系统日志: 错误应用程序名称: explorer.exe,版本: 6.3.9600.18231,时间戳: 0x56b8c9f1 错误模块名称: PDZipMenu64.dll,版本: 1.4.3.11014,时间戳: 0x5da4349a 异常代码: 0xc...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。