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

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

xjtudll5年前 (2022-04-05)技术心得7090

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://www.xjtudll.cn/Exp/640/

标签: SQL
分享给朋友:

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

SQL累减语句

https://bbs.csdn.net/topics/70362619 表一 Item Qty A 10 A 12 A 14 B 13 B 60 C 30 C 40 C 10 表二 Item Qty A...

BIN转BCD

BCD代码,Binary-Coded Decimal‎,是一种二进制的数字编码形式,用二进制编码的十进制代码。这种编码形式利用了四个位元来储存一个十进制数,使二进制和十进制之间的转换得以快捷的进行。常见BCD编码有8421 BCD码,2421 BCD码,余3码。我们要说的就是8421 BCD码与二进...

c# textbox的passwordchar清空

//三种都是清空 this.textBox1.PasswordChar = new char(); this.textBox1.PasswordChar = '\0'; this.textBox1.PasswordChar = default(char);...

PDF书签导航缩放比例修改

PDF书签导航缩放比例修改

网上下载了一个PDF文档,打开一看,默认缩放比例是6400%,这就意味着没法看,得手动更改缩放比例,但是手动改了缩放比例后,再点一个书签,又变成了6400%,总不能每次都修改缩放比例吧,太浪费时间。 这里推荐一个软件,可以批量修改书签。软件名称:PDF补丁丁。该软件是绿色软件,操作十分简单,除了可...

Keil得到C编译之后的汇编代码

Keil得到C编译之后的汇编代码

在Options for Target --> Listing标签页下 在C Compiler Listing: \*.lst部分中勾选Assembly Code,这样生成的LST文件中就会包含汇编源码了。 找到相应的lst文件,如图所示: 用记事本打开,里面就有汇编代码了...

C#中实现VB中的CreateObject方法

经常看到有些VB的例子中直接用个CreateObject就可调用系统功能(大多是COM对象),像用户设定,网络设定等等。虽然C#中可以通过使用VB的命名空间的方法来调用CreateObject函数,但是这样比较没什么用,因为生成的对象的所带有的方法都不能使用。C#中还可以直接用添加引用的方式来调用一...

发表评论

访客

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