一个doc文件先LOADFROMFILE倒入ORACLE数据库,再SAVETOFILE后发现成乱码了

zh_mi 2010-04-26 09:19:23
请教高手怎么解决?
...全文
132 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
柯本 2010-04-27
  • 打赏
  • 举报
回复
晕,还是错了一个字段名(另外表名为test1),最后一句为:
(ADOQuery1.FieldByname('mydoc') AS TBlobField).SaveToFile('d:\temp\aaa.doc');
柯本 2010-04-27
  • 打赏
  • 举报
回复
不好意思,以为是BCB版,Delphi的:
写入
ADOQuery1.Close;
ADOQuery1.SQL.Text:='insert into test1 values(:id,:mydoc)';
ADOQuery1.Parameters[0].Value:=1;
ADOQuery1.Parameters[1].LoadFromFile('d:\temp\aaa.doc',ftBlob );
ADOQuery1.ExecSQL;
读出
ADOQuery1.Close;
ADOQuery1.SQL.Text:='select mydoc from test1 where id=1';
ADOQuery1.Open;
(ADOQuery1.FieldByname('pic') AS TBlobField).SaveToFile('d:\temp\aaa.doc');
柯本 2010-04-27
  • 打赏
  • 举报
回复
word文件存入数据库应该用oracle的blob字段,
设表为 create table test(id integer,mydoc blob)

写时用这种方式:
ADOQuery1->Close();
ADOQuery1->SQL->Text="Insert into test values(:id,:mydoc)";
ADOQuery1->Parameters->Items[0]->Value=1;
ADOQuery1->Parameters->Items[1]->LoadFromFile("d:\\temp\\aaa.doc",ftBlob );
ADOQuery1->ExecSQL();
读出时用:
ADOQuery1->Close();
ADOQuery1->SQL->Text="select mydoc from test where id=1";
ADOQuery1->Open();
((TBlobField *)ADOQuery1->FieldByName("mydoc"))->SaveToFile("d:\\temp\\aaa1.doc");
YFLK 2010-04-27
  • 打赏
  • 举报
回复
问题好象出在LOADFROMFILE和SAVETOFILE,建议用流方式直接采用二进行制读写文件就不会出现这类问题.
亮剑_ 2010-04-26
  • 打赏
  • 举报
回复
比较写入和读出的文件
  • 打赏
  • 举报
回复
doc文件不是一般的txt文件,你保存后是不是用word来打开啊,如果用记事本打开当然乱码

2,496

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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