如何把doc或者rtf文档保存到SQL SERVER数据库的varbinary字段? 我想把RICHEDIT控件编辑过的内容保存到数据库里面,如何实现? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 那直接用数据感知控件dbrichedit不就行了-------------------------------------http://scsoft.agrie.com 用流或者用dbricheditvar StringStream : TstringStream; filestream : Tfilestream;begin StringStream := TstringStream.Create(''); filestream := Tfilestream.Create('d:/d.doc',fmOpenRead); filestream.CopyFrom(filestream,filestream.Size) Query1.SQL.Clear; ADOQuery1.SQL.Add('Insert into mytable (image1)values(:image1)'); ADOQuery1.Parameters.ParamByName('image1').LoadFromStream(StringStream,ftBlob); ADOQuery1.ExecSQL; freeandnil(StringStream); freeandnil(filestream);end; 如果从文件中往数据库写东东就用Stream,如果只是保存用户输入内容就用dbrichedit. cdsgajxlp(起名很难)怎么从数据库里读出来,先是在richedit里? 显示内容procedure TForm1.btnShowClick(Sender: TObject);var sFileName: String; BS : TADOBlobStream;begin BS :=TADOBlobStream.Create(TBlobField(adodsBlobs.FieldByName('Blobs')),bmRead); try sFileName := ExtractFilePath(Application.ExeName)+'tmpBlob'; sFileName := sFileName + '.' + adodsBlobs.FieldByName('Extension').AsString; BS.SaveToFile(sFileName); OleContainer1.CreateObjectFromFile(sFileName, False); finally // wrap up BS.Free; end; // try/finallyend;写入procedure TForm1.btnwirte(Sender: TObject);var sFileName : String; function BlobContentToString(const FileName: string): string; begin with TFileStream.create(FileName, fmOpenRead)do try SetLength(Result, Size); Read(Pointer(Result)^, Size); finally Free; end; end;begin if (OpenDialog1.Execute)then begin sFileName := OpenDialog1.FileName; adodsBlobs.Edit; adodsBlobs.FieldByName('Blobs').AsString := BlobContentToString(sFileName); adodsBlobs.Post; end;end; 由于这个是用复文本的,后台最好是用image类型,在读出来的时候也好一些写入代码: adotable1.FieldByName('FileName').SetFieldType(ftBlob); TBlobField(adotable1.FieldByName('FileName')).LoadFromFile('c:\aaa.doc');读出代码: cfile:= 'C:\bbb.doc'; TBlobField(adotable1.FieldByName('FileName')).SaveToFile(cFile); (高分请教)在文本编辑器显示特殊字符的算法问题 怎么使用datatype属性 怎么样将一个子窗口的ToolBar ,放在父窗口的Coolbar 上面 求助反三角函数,就是直角三角形中,已知两边求角度的函数 如何设置,才能实现向ini文件一样的配置程序 为什么程序员没有效率?up有份 请问“带类型常量”到底是怎么用的? 三层的中间层是如何做的? 推荐全国邮政编码数据库,详情见内 label怎样加方框?我知道static text可以!二者怎样纵向显示? 请问.DOC文件用什么控件或方法来处理? 短信收发怪问题
http://scsoft.agrie.com
var
StringStream : TstringStream;
filestream : Tfilestream;
begin
StringStream := TstringStream.Create('');
filestream := Tfilestream.Create('d:/d.doc',fmOpenRead);
filestream.CopyFrom(filestream,filestream.Size)
Query1.SQL.Clear;
ADOQuery1.SQL.Add('Insert into mytable (image1)values(:image1)');
ADOQuery1.Parameters.ParamByName('image1').LoadFromStream(StringStream,ftBlob);
ADOQuery1.ExecSQL;
freeandnil(StringStream);
freeandnil(filestream);
end;
怎么从数据库里读出来,先是在richedit里?
显示内容
procedure TForm1.btnShowClick(Sender: TObject);
var
sFileName: String;
BS : TADOBlobStream;
begin
BS :=
TADOBlobStream.Create(TBlobField(adodsBlobs.FieldByName('Blobs')),
bmRead);
try
sFileName := ExtractFilePath(Application.ExeName)+'tmpBlob';
sFileName := sFileName + '.' +
adodsBlobs.FieldByName('Extension').AsString;
BS.SaveToFile(sFileName);
OleContainer1.CreateObjectFromFile(sFileName, False);
finally // wrap up
BS.Free;
end; // try/finally
end;写入
procedure TForm1.btnwirte(Sender: TObject);
var
sFileName : String;
function BlobContentToString(const FileName: string): string;
begin
with TFileStream.create(FileName, fmOpenRead)do
try
SetLength(Result, Size);
Read(Pointer(Result)^, Size);
finally
Free;
end;
end;
begin
if (OpenDialog1.Execute)then
begin
sFileName := OpenDialog1.FileName;
adodsBlobs.Edit;
adodsBlobs.FieldByName('Blobs').AsString :=
BlobContentToString(sFileName);
adodsBlobs.Post;
end;
end;
写入代码:
adotable1.FieldByName('FileName').SetFieldType(ftBlob);
TBlobField(adotable1.FieldByName('FileName')).LoadFromFile('c:\aaa.doc');
读出代码:
cfile:= 'C:\bbb.doc';
TBlobField(adotable1.FieldByName('FileName')).SaveToFile(cFile);