关于用ADO插入大量二进制数据的解决思路,欢迎讨论!!!

colorknight 2002-06-14 12:35:18
刚着手于ADO,可能有些地方理解的不对,望各位指正!

对于普通的数据插入,用_ConnectPtr连接的EXECUTE方法直接执行就可以。可是对于二进
制数据的插入,好象就只能用_RecordsetPtr选回的记录集的APPENDCHUNK()方法进行
操作了(不知还有没有其他方法)。对于插入操作,好象在开始记录集打开时需要以表方
式打开,其他以命令方式打开的如“select * from table_name where ..."打开的记录
集在做完插入操作后,数据好像存于记录集中并没有被更新到表中,(不知有没有什么方
发将记录集中的数据更新回表)。插入操作用的是_RecordsetPtr的ADDNEW和UPDATE方
法。另外,二进制数据操作比较多,如果每次打开,关闭表的话,回比较费时间,而且在
表体积增大后,打开一个表往往会造成超时。可是,如果始终打开这个表,数据库服务器
端又要维护这样一个缓冲的开销,随着表体积的动态增长,我不清楚回造成怎样的影响。

不知道,各位在这方面有没有什么好的想法和解决方案。我用的是SQL SERVER7.0的数据
库,对于SQL SERVER7.0的特性不熟悉,比如,打开一个表时它怎样对表中的数据进行
缓存,表数据量过大时,它是否分段缓存?对于表的更新如何体现?是否将新增加的数据
也放入缓冲区?对于一个普通的SQL语句直接插入数据的操作,打开一个表后,是否也得
先读入缓冲区,然后添加记录,再将缓冲区写回表,然后再关闭的?

请各位畅所欲言!!!!!!
...全文
82 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Rabbit_cy 2002-06-14
  • 打赏
  • 举报
回复
你可以把接受到的数据存成临时文件,然后慢慢处理啊
================================================================

CSDN 论坛助手 Ver 1.0 B0402提供下载。 改进了很多,功能完备!

★ 浏览帖子速度极快![建议系统使用ie5.5以上]。 ★ 多种帖子实现界面。
★ 保存帖子到本地[html格式]★ 监视您关注帖子的回复更新。
★ 可以直接发贴、回复帖子★ 采用XML接口,可以一次性显示4页帖子,同时支持自定义每次显示帖子数量。可以浏览历史记录!
★ 支持在线检测程序升级情况,可及时获得程序更新的信息。

★★ 签名 ●
可以在您的每个帖子的后面自动加上一个自己设计的签名哟。

Http://www.ChinaOK.net/csdn/csdn.zip
Http://www.ChinaOK.net/csdn/csdn.rar
Http://www.ChinaOK.net/csdn/csdn.exe [自解压]

冷羽 2002-06-14
  • 打赏
  • 举报
回复
关注
我也有同感呀,目前也没有找到解决的办法,数据多了慢的要死呀。
colorknight 2002-06-14
  • 打赏
  • 举报
回复
我可没说二进制数据指的是文件啊!而且我要做的是一个服务端程序,所以才回对
性能要求那么高,要不断的接受二进制数据,每一次是一个记录,这样要不断的向
数据库中插入记录,而且服务器吗,最好就是仍在那里不用管的那种。如果ADO使
用的不当,数据操作过慢,丢掉了数据那就很失败。希望各位,积极发言!
mfkzj 2002-06-14
  • 打赏
  • 举报
回复
呵呵 问一句多少分5颗星
mfkzj 2002-06-14
  • 打赏
  • 举报
回复
数据的插入你象要提高性能?可以啊 你可以使用象断点续传类似的功能 反正打开文件是二进制的 你可以使用多线程来读取文件将文件分成几块然后分别添加到数据库中的字段中 不过需要在该表中建立关联 这样就可以大大的加快添加大容量二进制数据的性能
你试试看 我以前就这样做过
colorknight 2002-06-14
  • 打赏
  • 举报
回复
谢谢各位,我现在的问题主要是二进制数据插入时的性能问题,因为对于大数据量
的二进制数据操作(指的是项数,而不是二进制数据本身大),正如我的提问那样
我想找到一个好的性能高的解决方案。
表的设计,改成单字段一表,还是没能解决我上面提出的问题。
二进制数据的插入,我用APPENDCHUNK方法,已经不用我再关心二进制数据插入的
大小了,(这是比较过SQL语句,和DB_LIBRARY后得出的结
论)。
修改超时值,肯定是要做这样的操作的,不过数据插入的性能问题,还是没有解
决。
similar99 2002-06-14
  • 打赏
  • 举报
回复
此方法最大好象不能更新超过64k的数据.. 就是说SQL statement不能大于128k..
similar99 2002-06-14
  • 打赏
  • 举报
回复
-- tblTest 中 binVal 字段为 text/image/largebinary 型

update tblTest set binVal = 0x30313233 where id = 1
--binval = '1234'
nullhue 2002-06-14
  • 打赏
  • 举报
回复
我认为,吧存放二进制的字段作为一个独立的表,在需要的时候进行存取。
比如:使用网格的形式展示数据,需要点击,才从表中读取数据。
也就是化整为零的方法。
关于ado对象超时可以通过设置来属性来不让它超时。
Everyday 2002-06-14
  • 打赏
  • 举报
回复
gz

16,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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