========请教做证券的朋友:有关于DBF操作的一个问题?===========

Bind 2002-03-12 07:37:58
请问:在读DBF文件时,若另一个程序在更新数据,怎么防止读到的数据不正确?例如:有一条记录某字段的值为9.99,当程序读时被另一程序更新成10.00,这时岂不有可能读到的数据是0.00?
...全文
60 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
logical 2002-03-23
  • 打赏
  • 举报
回复
提醒你:不能一条一条记录地读,这样你根本不能正常工作的.你应该一次把文件装到内存中(建立一个文件内存映象),再慢慢地"读",完了再装一次.
Bind 2002-03-13
  • 打赏
  • 举报
回复
郁闷,结帖先.
Bind 2002-03-13
  • 打赏
  • 举报
回复
那么说来,是允许加锁的?如此我就只能是一条一条记录读了.
linjiework 2002-03-13
  • 打赏
  • 举报
回复
我以前写过证券程序,是向show128.DBF等文件读/写信息。我就是用到了锁。
你在读取数据时必须给被读取的数据加锁,否则没办法。你加锁后,系统会自动让写数据的进程等你解锁之后再写数据,不会干扰卫星程序的工作。
我这样做过,没遇见过什么问题。你也可以试试。
awzzz 2002-03-13
  • 打赏
  • 举报
回复
不知道啊!好象没问题呀!
用下面的方法:

hFile = CreateFile(m_szHQFileName,
GENERIC_READ,
FILE_SHARE_READ|FILE_SHARE_WRITE,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_ARCHIVE,
NULL);

ReadFile(hFile, &HQ_DBF_record, sizeof(HQ_DBF_record), &dwByte, NULL)
...
Bind 2002-03-13
  • 打赏
  • 举报
回复
我讲清楚一点我的问题:证券公司的DBF库是由卫星接收系统不断实时更新的.我的程序想从证券公司的DBF库中把这些不断更新的数据读出来.毫无疑问:我的程序绝不允许干扰卫星程序的工作.我不知道卫星程序工作时的状态,是否允许加锁?另外,一条一条读是有用(我想),但是效率是否太低了一点?
lizmei001 2002-03-13
  • 打赏
  • 举报
回复
可以一条一条的读,用独占方式读一条就关
Bind 2002-03-12
  • 打赏
  • 举报
回复
strip: 可不可以讲一下你的做法的原理?
Bind 2002-03-12
  • 打赏
  • 举报
回复
做证券的朋友都陪女朋友逛街去了吗?
strip 2002-03-12
  • 打赏
  • 举报
回复
我以前写证券软件的时候,都是用的_locking函数来保证唯一读写的,那时候在dos下面,还必须在机器启动的时候装了share.exe在autuoexec.bat

但愿这些信息有些启发作用
wallycq 2002-03-12
  • 打赏
  • 举报
回复
那你的问题就不是“怎么防止读到的数据不正确”,你只能自己分析了,当卫星写的时候,如果你正在读,就写入另外一个表里面,等等,可以参考一下大型关系型数据库的锁。
Bind 2002-03-12
  • 打赏
  • 举报
回复
大哥,你不会让我命令卫星停止向DBF写数据吧?
wallycq 2002-03-12
  • 打赏
  • 举报
回复
去看看msdn吧,这个标志能够防止别的进程读写你打开的文件,直到你关闭它。难道不能满足你吗?
Bind 2002-03-12
  • 打赏
  • 举报
回复
如果我读的时候卫星正好在写这条记录,那怎么办?
Bind 2002-03-12
  • 打赏
  • 举报
回复
file.Open(CFile::modeRead | CFile::typeBinary | CFile::shareDebyNone);
这种方式就可以吗?我一次要读进所有的记录的.
wallycq 2002-03-12
  • 打赏
  • 举报
回复
那就很easy了,这样:在CFile::Open的时候,加上CFile::shareDenyNone的标志,防止别的程序读取就行了。
wjyasd 2002-03-12
  • 打赏
  • 举报
回复
并发控制…… 设置成独占资源的形式!
Bind 2002-03-12
  • 打赏
  • 举报
回复
file.Read(lpBuf, ulRecordsCount * usRecoudLength);
怎么,有问题吗?
wallycq 2002-03-12
  • 打赏
  • 举报
回复
你用什么方式读的dbf?

16,551

社区成员

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

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

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