当前位置:主页>销售管理软件> 列表

如何将一个文件写入sql server 的image 字段 找速达财务软件操作

销售管理软件版1楼: 我想把执行文件写入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楼: 谢谢大家了