如何将一个文件写入sql server 的image 字段 找速达财务软件操作
读取我已经知道了,
Stream:=TAdoblobStream.Create(fieldbyname(''newprogram'') as TBlobField,
bmRead);
Stream.SaveToFile(ExtractFilePath(ParamStr(0))+''_khdagl.exe'');
现在就是不知道怎么写上去
2楼: var
mss: TMemoryStream;
zip: TDeCompressionStream;
zip1: TCompressionStream;
fs : TFileStream;
fBuf: Array[0..16383] of Byte;
flen: Integer;
//从数据库中取出图片
//...写出SQL语句以取得有图片的记录,此处从略
mss := TMemoryStream.Create;
fs := TFileStream.Create(''filename.jpg'',fmCreate or fmOpenWrite);
try
TBlobField(Que.FieldByName(''pic'')).SaveToStream(mss);
zip := TDeCompressionStream.Create(fs);
try
flen := zip.Read(fbuf, SizeOf(fBuf));
while flen > 0 do begin
fs.Write(fbuf, flen);
flen := zip.Read(fbuf, SizeOf(fBuf));
end;
finally
FreeAndNil(zip);
end;
finally
mss.Free;
fs.Free;
end;
//将文件filename.jpg中的图片保存到数据库
//...写出SQL语句,打开Que,并定位到要保存图片的记录,此处从略
fs := TFileStream.Create(''filename.jpg'',fmOpenRead);
mss := TMemoryStream.Create;
try
zip1 := TCompressionStream.Create(clDefault,mss);
try
flen := fs.Read(fbuf, SizeOf(fBuf));
while flen > 0 do begin
zip1.Write(fbuf, flen);
flen := fs.Read(fbuf, SizeOf(fBuf));
end;
//保存到数据库
TBlobField(Que.FieldByName(''pic'')).LoadFromStream(mss);
Que.UpdateBatch();
//...
finally
zip1.Free;
end;
finally
fs.Free;
mss.Free;
end; 如速达财务软件操作
3楼: 都给楼上说了。哈!~~
4楼: 请参考
http://www.bc-cn.net/Article/kfyy/delphi/jszl/200601/3102.html
5楼: que是什么?query or adoquery or table or adotable ,要先打开吗?
6楼: 对不起,我没认真看,嗬嗬,试验中.....
销售管理软件版7楼: 我简化了以后,改成这样:
var
fs : TfileStream;
begin
//将文件filename.jpg中的图片保存到数据库
//...写出SQL语句,打开Que,并定位到要保存图片的记录,此处从略
with at_upgrade do begin
close ;
tablename := ''p_upgrade'' ;
open ;
edit ;
end ;
fs := TfileStream.Create(''n_khdagl.exe'',fmOpenRead);
try
//保存到数据库
TBlobField(at_upgrade.FieldByName(''newprogram'')).LoadFromStream(fs);
at_upgrade.UpdateBatch();
//...
finally
fs.Free;
end;
at_upgrade.Close ;
end;
运行时提示 缺少更新或刷新的键值列表,为什么呀?
8楼: 楼主用我这个吧。
“ 缺少更新或刷新的键值列表”:是缺少主建的意思。
procedure TFrmConfigPrice.cxDBBlobEdit1PropertiesButtonClick(
Sender:TObject; AButtonIndex:Integer);
begin
if not DataSource1.AutoEdit then exit;
if OpenPictureDialog.Execute then
begin
imagepath := OpenPictureDialog.FileName;
saveimage(image1, Dataset1, Dataset1.fieldbyname(''fProductPic''));
RzPageControl1.ActivePageIndex := 0;
end;
end;
procedure TFrmConfigPrice.saveimage(images:TcxImage; Datas:TADODataSet; fields:tfield);
var
testStream:TMemoryStream;
begin
if trim(imagepath) <> '''' then
begin
try
images.Picture.LoadFromFile(imagepath);
testStream := TMemoryStream.Create; //„“½¨ƒÈ´æÁ÷
images.Picture.Graphic.SaveToStream(testStream); //Œ¢ˆDƬ±£´æÖÁƒÈ´æÁ÷ÖÐ
Datas.edit;
tblobfield(fields).LoadFromStream(testStream);
Datas.Post;
finally
testStream.Free;
end;
end;
end;
9楼: 谢谢大家了