CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

熟悉DBF操作的高手请进!!!

楼主Bind(宁静雪:找到你,绑定你!)(再战江湖)2002-08-12 09:51:23 在 VC/MFC / 基础类 提问

请问:如何实现快速对DBF所有记录的同一个字段更新?(更新后的值不一定相同)我用的是移位写的方式,感觉效率不高。有什么好的方法吗?另:FOXPRO的REPLACE命令是如何实现的?  
   
  谢谢!!! 问题点数:100、回复次数:13Top

1 楼Bind(宁静雪:找到你,绑定你!)(再战江湖)回复于 2002-08-12 10:08:44 得分 0

upTop

2 楼Bind(宁静雪:找到你,绑定你!)(再战江湖)回复于 2002-08-12 11:28:05 得分 0

没有人知道??Top

3 楼poplarc(毛小虎)回复于 2002-08-12 11:40:51 得分 0

我是低手,也不清楚你的第二个问题是啥子意思。^_^  
  是不是repl   field   with   mem_var?Top

4 楼Bind(宁静雪:找到你,绑定你!)(再战江湖)回复于 2002-08-12 11:40:59 得分 0

来人啊!!!!Top

5 楼Bind(宁静雪:找到你,绑定你!)(再战江湖)回复于 2002-08-12 11:44:33 得分 0

就是如何用C来实现FOX的REPLACE功能。说白了就是一个文件操作的问题。要修改的内容之间不连续,(间隔固定长度)如何高效率的修改?FOX的效率很高。Top

6 楼poplarc(毛小虎)回复于 2002-08-12 11:45:13 得分 0

对不起,吓着你了?我都说了我是低手嘛!Top

7 楼freelybird(阿愚)回复于 2002-08-12 13:57:41 得分 0

“移位写“是理论上的最快速度。  
  不明白你为什么说“感觉效率不高“。  
   
  我猜可能是操作文件不妥引起的。CFile::Seek(...)   CFile::Write(...)Top

8 楼sunmandun(阿满)回复于 2002-08-12 14:04:51 得分 0

为何不用SQL命令去实现你的功能?如UPDATE   TABLE   SET   field   as   ......Top

9 楼Bind(宁静雪:找到你,绑定你!)(再战江湖)回复于 2002-08-12 14:08:51 得分 0

freelybird(阿愚)   :  
   
  我的做法如下:  
   
  for(INT   i   =   0;   i   <   nCount;   i++){  
      pos   =   ....  
      file.Seek(pos,   CFile::begin);  
      file.Write(...);  
  }  
   
  1千6百多条记录要用近2分钟!!!而FOX的RELPACE命令,如:  
   
  REPLACE   ALL   field   WITH   XXX  
   
  这条命令执行连1秒钟都不要!!!  
   
  请指教!!Top

10 楼jz1204(皮特)回复于 2002-08-12 14:17:26 得分 0

人家foxpro有索引,还有优化的算法,速度当然快了!Top

11 楼freelybird(阿愚)回复于 2002-08-12 14:54:13 得分 100

文件太大时,你这样我想肯定比较耗时。  
  file.Seek(pos,   CFile::begin);你为什么每次都从CFile::begin开始编移呢?  
  用它试试CFile::current(按顺序从当前位置编移)  
   
  另外一点,如果把整个文件读入缓冲区,再在内存中一次更新数据,最后一次  
  写入磁盘,我想会更快的。因为磁盘IO操作是很快的。而且DBF文件也不会太  
  大(10Mbyte),以空间换时间呗Top

12 楼Bind(宁静雪:找到你,绑定你!)(再战江湖)回复于 2002-08-12 17:46:12 得分 0

freelybird(阿愚)   :  
   
  你说的第一种方法我早试过了,没什么区别。再说两种SEEK的方法我想操作系统的实现是相同的。  
   
  第二种方法我相信会更快一点,不过我不想重写其它字段。而且我认为FOX也不会是用这种做法。  
   
  谢谢!!Top

13 楼Bind(宁静雪:找到你,绑定你!)(再战江湖)回复于 2002-08-21 18:15:08 得分 0

无可奈何,只好用freelybird(阿愚)   的办法。Top

相关问题

  • 熟悉文件操作的高手请进来坐一下。
  • 熟悉文件操作的高手请进!!!
  • 熟悉winform下的DataGrid操作的请进
  • 熟悉windows操作系统的高手请进
  • 请问BCB6下如何对DBF文件进行操作?
  • 关于C中操作DBF
  • 如何操作dbf文件?
  • ADO操作dbf问题
  • 使用ADO对DBF文件进行操作无法修改、添加的问题
  • 对字符操作熟悉的请答

关键词

  • 操作
  • 效率
  • 实现

得分解答快速导航

  • 帖主:Bind
  • freelybird

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo