保存word文档到数据库后为什么数据库里面不能马上查询到这个记录?读出这个文件的时候这个记录也不能被其他用户访问?(50分)

  • 主题发起人 秦野明
  • 开始时间

秦野明

Unregistered / Unconfirmed
GUEST, unregistred user!
我将word文件保存到oracle数据库后发现不能马上在数据库里面看到,必须退出程序后才能在数据库中看到这个记录。我猜想是query不能释放的问题,但是不管我如何写query.close都不行。还有就是读出word文件后,这个别的客户就不能访问这条记录了,一访问就当住。小弟是新手,刚刚学delphi,50分求解。
代码如下:
保存:
function SaveFile(Squery:TQUERY)boolean;
var
ToTemp2:string;
Sfile:TBlobField;
sSql:string;
begin
result:=false;
ToTemp2:='C:/~ReportTemp.dot';
sSql:='select id,wordfile from 表名' //wordfile是保存word记录的字段

Sfile:=TBlobField.Create(self);
Sfile.FieldName:='wordfile';
Sfile.DataSet:=Squery
Squery.Active:=false;
Squery.RequestLive:=true;
ExecuteSql(sSql,Squery,'');//自己编写的执行sql的函数,过去用过多次,没有问题。
with Squery do
begin
//启用文件流保存文件到数据库
MyFile:=TFileStream.Create(ToTemp2,fmOpenRead);
……(能够正确取出word文件的,也没对query进行操作,节省篇幅,我就不写了)
end;//保存文件结束

result:=true;
Sfile.Free;
Sfile.DataSet.Close;
SQuery.Close;
SQuery.Active:=false;
DeleteFile(ToTemp2);
Application.MessageBox('文件成功保存至数据库!','信息!',MB_ICONINFORMATION);
end;

为了能够关闭query,我把能想到的关闭query的办法都写到了后面,但是提示成功后数据库中就是不能看见这个文件。必须退出程序才能看见。不知道为什么啊。

读文件也一样,读了以后如果不退出系统,别人就不能同时读这个数据库中的记录,但是也不提示找不到,使用查询工具(sql explorer)查的时候就长时间地停在执行语句上,除非刚才的用户退出系统后才能查询。为什么呢?
 

秦野明

Unregistered / Unconfirmed
GUEST, unregistred user!
[:(][:(]
不会没有人知道吧?
 
顶部