用ado 下面这种格式该怎么做才能有条件的更新数据呢???

huntgirl 2003-10-15 01:56:39
下面的代码是新增一条记录,Picture是Blob类型字段,imageID为4000,
插库成功,可为4是我想更改imageID000的这条记录,要怎以写呢?
我把rs.AddNew 改为 rs.update 和 rs.UpdateBatch 都不行,提示大意为不能更改主键.我该怎么做呢?
mstream.Mode = adModeReadWrite
mstream.Type = adTypeBinary
mstream.Open
mstream.LoadFromFile "e:\13.jpg"
rs.AddNew
rs!question="这是为什么"
rs!imageID=4000
rs!Picture= mstream.Read
rs.UpdateBatch
mstream.Close
...全文
38 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
yoki 2003-10-15
  • 打赏
  • 举报
回复
rs.AddNew
rs!question="这是为什么"
rs!imageID=4000
rs!Picture= mstream.Read
rs.UpdateBatch
改为:
dim cn as new adodb.connection
cn.execute"update 表名 set question='这是为什么',picture=" & mstream.read & "where imageid=4000"
hn123 2003-10-15
  • 打赏
  • 举报
回复
我来,呵呵
huntgirl 2003-10-15
  • 打赏
  • 举报
回复
问题解决了,可是没人来,这分给谁呀,呵呵,谁来,白送了.
huntgirl 2003-10-15
  • 打赏
  • 举报
回复
抱歉,发出去才看到第二行的字给打乱了,应该是,"我想更改imageId为4000的这条记录".

数据集组件,大家也许会首选ADO,然后说BDE太老了,DBX不敢用。其实delphi优秀的数据集组件真不少,除了上诉的数据集组件,还有ZEOSDB、SQL Direct、UniDAC等,要是专业的数据集组件,更是百花盛开,如FIBPLUS、SDAC、ODAC、DOA等等,商业和开源不尽其中!这里只讨论UniDAC和ADO的一些比较。 Delphi能发展到现在,和一些著名的第三方控件厂商大力支持分不开,这其中包括Devart公司(Corelab)公司。Corelab公司数据集驱动非常出名,就拿ODAC、SDAC和DBX驱动来说,已经远胜其他同行的第三方控件公司。UniDAC是Devart公司最近的力作,将ODAC、SDAC、IBDAC等驱动综合集成在一块。UniDAC无论是三层还是两层,都远胜于ADO下面说一些UniDAC的优点: 1、非常完美的支持多数据库的数据集套件。这一点,ADO也支持多数据库,但ADO除了MSSQL驱动之外,其他驱动支持的非常差。就拿Oracle驱动来说,在调用oracle复杂的存储过程参数,总是或多或少有些问题;MSSQL企业管理器如果用了第三方驱动(比如是oracle),在导入导出数据也尚存在问题!更别提不是主流的IB数据库驱动。UniDAC支持Oracle、MSSQL、MYSQL、IB/FB、PostgreSQL。 2、对三层特性支持非常好!也许你也会问,三层也是访问DB,ADO也支持啊?!但三层最好方式是无状态方式,在高并发的处理中,一般不允许本地有数据集缓存。ADO没有单向数据集特性,所有的数据下载到本地,不停的开辟内存或释放大内存,对三层的内存是一个极大考验。TUniQuery有一个UniDirectional属性,支持单向速度,这点和DBX的想法不谋而合。况且,单向数据集特性速度非常快,在三层中,配合TDataSetProvider,中间件将其Data包发送到客户端,速度无可比拟。ADO也有流或XML格式包,但无论是XML或流格式数据包远比CDS的包大几倍。CDS封包技术很好! 3、一些非常有用的属性或方法。常言道,细微之处见体贴。UniDAC有一些过人的方法或属性。比如,刷新单条记录(RefreshRecord)、多表更新的属性(UpdatingTable)、宏替换参数(Macros)、集成删除/新增/修改/刷新/锁定SQL语句、FetchRows,更让人称道的是引入了UpdateSQL组件。 在处理MSSQL新增后的自增字段,和ADO一样可以直接自动返回自增字段值,这一点,BDE不能到、DBX不能到、ZEOSDB不能到。更令人称奇是,配合TUniUpdateSQL,还能自动返回自增字段值。 TUniUpdateSQL是一个好东西,ADO缺少TUdateSQL运作模式,默认的更新机制是主键字段+已变化的字段where条件。在一般情况下是没问题,但如果这个表没有主键或where条件中的字段小数位很长导致误餐,就会产生更新找不到记录。TUdateSQL可以保证这点,运作灵活又透明。 4、对oracle支持非常好。别的不说,光是一个oracle连接的Direct Mode,不用安装oracle官方肥硕客户端(网上也有精10M左右简版的客户端),只要客户机支持TCP/IP协议即可。如果用ADO连接Oracle,必须保证先安装oracle客户端,还要配置连接文件,一堆繁琐事情。UniDAC对oracle支持的非常完美,和专业化的DOA差不多!
[转]为什么要选择UniDAC? 说到数据集组件,大家也许会首选ADO,然后说BDE太老了,DBX不敢用。其实delphi优秀的数据集组件真不少,除了上诉的数据集组件,还有ZEOSDB、SQL Direct、UniDAC等,要是专业的数据集组件,更是百花盛开,如FIBPLUS、SDAC、ODAC、DOA等等,商业和开源不尽其中!这里只讨论UniDAC和ADO的一些比较。 Delphi能发展到现在,和一些著名的第三方控件厂商大力支持分不开,这其中包括Devart公司(Corelab)公司。Corelab公司数据集驱动非常出名,就拿ODAC、SDAC和DBX驱动来说,已经远胜其他同行的第三方控件公司。UniDAC是Devart公司最近的力作,将ODAC、SDAC、IBDAC等驱动综合集成在一块。UniDAC无论是三层还是两层,都远胜于ADO下面说一些UniDAC的优点: 1、非常完美的支持多数据库的数据集套件。这一点,ADO也支持多数据库,但ADO除了MSSQL驱动之外,其他驱动支持的非常差。就拿Oracle驱动来说,在调用oracle复杂的存储过程参数,总是或多或少有些问题;MSSQL企业管理器如果用了第三方驱动(比如是oracle),在导入导出数据也尚存在问题!更别提不是主流的IB数据库驱动。UniDAC支持Oracle、MSSQL、MYSQL、IB/FB、PostgreSQL。 2、对三层特性支持非常好!也许你也会问,三层也是访问DB,ADO也支持啊?!但三层最好方式是无状态方式,在高并发的处理中,一般不允许本地有数据集缓存。ADO没有单向数据集特性,所有的数据下载到本地,不停的开辟内存或释放大内存,对三层的内存是一个极大考验。TUniQuery有一个UniDirectional属性,支持单向速度,这点和DBX的想法不谋而合。况且,单向数据集特性速度非常快,在三层中,配合TDataSetProvider,中间件将其Data包发送到客户端,速度无可比拟。ADO也有流或XML格式包,但无论是XML或流格式数据包远比CDS的包大几倍。CDS封包技术很好! 3、一些非常有用的属性或方法。常言道,细微之处见体贴。UniDAC有一些过人的方法或属性。比如,刷新单条记录(RefreshRecord)、多表更新的属性(UpdatingTable)、宏替换参数(Macros)、集成删除/新增/修改/刷新/锁定SQL语句、FetchRows,更让人称道的是引入了UpdateSQL组件。 在处理MSSQL新增后的自增字段,和ADO一样可以直接自动返回自增字段值,这一点,BDE不能到、DBX不能到、ZEOSDB不能到。更令人称奇是,配合TUniUpdateSQL,还能自动返回自增字段值。 TUniUpdateSQL是一个好东西,ADO缺少TUdateSQL运作模式,默认的更新机制是主键字段+已变化的字段where条件。在一般情况下是没问题,但如果这个表没有主键或where条件中的字段小数位很长导致误餐,就会产生更新找不到记录。TUdateSQL可以保证这点,运作灵活又透明。 4、对oracle支持非常好。别的不说,光是一个oracle连接的Direct Mode,不用安装oracle官方肥硕客户端(网上也有精10M左右简版的客户端),只要客户机支持TCP/IP协议即可。如果用ADO连接Oracle,必须保证先安装oracle客户端,还要配置连接文件,一堆繁琐事情。UniDAC对oracle支持的非常完美,和专业化的DOA差不多! 当然,最大的缺点是,非常贵,最贵的档次,差不多可以买半套的D2009!

1,216

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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