那个前辈知道不知道,怎么使用adoquery保存文件到数据库(100)

  • 主题发起人 主题发起人 chenzhihui
  • 开始时间 开始时间
C

chenzhihui

Unregistered / Unconfirmed
GUEST, unregistred user!
假如想做一个系统更新程序。我的基本想法:1.使用更新程序要一个可执行程序保存到数据中,例如:保存编译好的exe文件。2.更新程序根据上传文件的版本,来判断是否需要更新。3.用户运行exe文件时候,判断程序版本号,如果版本新,就从数据库中取出这个 文件,来覆盖exe文件。具体在使用adoquery保存exe文件到数据库字段,和从数据库中查询出这个文件怎么取出保存。不是很清楚。。那位前辈知道的话。指点一下。比如使用adoquery的什么方法能保存文件到数据库。
 
var ms:TMemoryStream;begin try ms:=TMemoryStream.create; if open1.Execute then {选择一个可执行文件} begin ms.LoadFromFile(open1.FileName); TBlobField(dm1.TMVLib.FieldByName('oIco')).LoadFromStream(ms); dm1.TMVLib.Post; end; finally ms.Free; end;用ADOQUERY的方式你可以adoquery1.sql.add(select * from table where id=0) {给个不存在的条件}adoquery1.open;qdoquery1.edit;下来你应该知道了吧.
 
看了你的答案,我知道要用流的方式保存到数据库的blob类型的字段。但又碰到一个问题解决不了,就是在设置参数的时候怎么把这个流传递给query,让它能正确找到这个流体,并保存到数据中。create table CZH_TEST( PROGRAM_FILE BLOB)//在oracle上建立一个保存文件的表。我的代码如下:var str:Tmemorystream;begin inherited; adoquery1.Connection:=DBconn; str:=Tmemorystream.Create; str.LoadFromFile('E:/ABM/SOURCE CODE/ZHWork/exe/PeriorMgr.exe'); str.Position:=0; adoquery1.SQL.Text:='InSert into CZH_TEST(PROGRAM_FILE) values(:SPRG)'; Tblobfield(adoquery1.ParamByName('SPRG')).loadfromstream(str); //这个地方有问题 //adoquery1.ParamByName('BackTxtDetails').ParamType:=ptInput; //adoquery1.ParamByName('Backtxtdetails').LoadFromFile('E:/ABM/SOURCE CODE/ZHWork/exe/PeriorMgr.exe',ftBlob); try adoquery1.ExecSql ; finally str.Free; end;//存储文件end;我不知道怎么这个地方怎么才能让这个流体告诉query,并让query保存到数据库。
 
后退
顶部