怎样把图片保存至sql server 和如何从sql server读出并显示图片.在线等,给个完整的实例,50分马上奉上! 我想保存bmp,jpg图片至sql server 数据库.查了下,用流的方法,可是我还不会做,谁给个完整的实例过来.急(完整实例). 刚上找了很多,但都用不了. 请高手帮个忙.在线等待.不胜感激!!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 搞错了,不好意思, 我保存的不是SQL SERVER中, 而是ORACLE中。 SQL SERVER 我只用过B、S结构的C#的保存。 但ORALCE 的我也给你看看吧。if Pnode=nil thenbegin MessageDlg('存储图的交换局没有指定!', mterror, [mbOk], 0); exit;end;if SavePictureDialog1.Execute thenBEGIN IF UPPERCASE(extractfileext(savepicturedialog1.FileName ))<>'.WMF' THEN BEGIN MessageDlg('存储图片必需为WMF,请重新选择!', mtwarning, [mbOk], 0); exit; END; QUERY3.SQL.Clear; Query3.SQL.Add('update J_CQ set PIC = :PIC where CQM = :CQM'); Query3.ParamByName('CQM').AsString := QUERY_CQ.FIELDBYNAME('CQM').ASSTRING; //Query2.ParamByName('GH').LoadFromStream(MyStream,ftOraBlob);; //QUERY2.Open; Query3.ParamByName('PIC').LoadFromFile(SavePictureDialog1.FileName,ftBlob); Query3.ExecSQL ; if database1.InTransaction then database1.Commit ; database1.StartTransaction ; try database1.Commit ; STR1:=QUERY_CQ.FIELDBYNAME('CQM').ASSTRING; query_CQ.close; query_CQ.open; QUERY_CQ.Locate ('CQM',STR1,[]); TreeView1Change(Sender, PNODE); except database1.Rollback ; MessageDlg('存储图不成功!', mterror, [mbOk], 0);end; //保存procedure TForm1.Button1Click(Sender: TObject);var str : TMemoryStream;begin if OpenDialog1.Execute then begin ds.DataSet.Insert; str := TMemoryStream.Create; str.LoadFromFile(OpenDialog1.FileName); TBlobField(ds.DataSet.FieldByName(字段名)).LoadFromStream(str); //文件赋值给指定字段,以下就可以做数据库操作了 ds.DataSet.Post; end;end;//读取我是先把字段中的文件流保存到本地TBlobField(ds.DataSet.FieldByName(字段名)).SaveToFile(文件名);//然后打开,方法比较笨,高手可以来指教一下 存储图片的代码: //存储图片 MyJPEG := TJPEGImage.Create; try with MyJPEG do begin Assign(Image1.Picture.Graphic); MS:=TMemoryStream.create; SaveToStream(MS); MS.Position:=0; TBlobField(FieldbyName('图片')).LoadFromStream(MS); end; finally MyJPEG.Free; end; try Post; except showmessage('数据无法提交');读取图片的代码: if ef_adoquery.RecordCount<>0 then begin try tempstream:=TmemoryStream.Create(); //将图像字段保存到流中 TBlobField(mainform.ef_ADOQuery.FieldByName('图片')).SaveToStream(tempstream); ////给留定位 tempstream.Position:=0; //省城临时image tempjpeg:=TJPEGImage.Create; //存留信息 tempjpeg.LoadFromStream(tempstream); //显示图像 Image1.Picture.Bitmap.Assign(tempjpeg); finally tempstream.Free; tempjpeg.Free; end; end; 问个问题。。。 如何知道一个文件被重命名成了其他文件 TThread.Doterminate在dll中执行顺序不对 一个动态库的问题? 散分 Delphi7中DBEXPRESS问题,在线等候 如何隐藏和显示工具栏? 如何判断客户端已连接上远程服务器?(在线等待) delphi连接数据库要求输用户名密码 谁有ReportBuilder的汉化版?我只能给这么多了! 那位兄弟帮俺做一下,调用DLL中的FORM的最简单的例子 有求这里的兄弟们,小弟的程序中需要发送邮件的功能.
但ORALCE 的我也给你看看吧。
if Pnode=nil then
begin
MessageDlg('存储图的交换局没有指定!', mterror, [mbOk], 0);
exit;
end;if SavePictureDialog1.Execute then
BEGIN
IF UPPERCASE(extractfileext(savepicturedialog1.FileName ))<>'.WMF' THEN
BEGIN
MessageDlg('存储图片必需为WMF,请重新选择!', mtwarning, [mbOk], 0);
exit;
END;
QUERY3.SQL.Clear;
Query3.SQL.Add('update J_CQ set PIC = :PIC where CQM = :CQM');
Query3.ParamByName('CQM').AsString := QUERY_CQ.FIELDBYNAME('CQM').ASSTRING;
//Query2.ParamByName('GH').LoadFromStream(MyStream,ftOraBlob);;
//QUERY2.Open;
Query3.ParamByName('PIC').LoadFromFile(SavePictureDialog1.FileName,ftBlob); Query3.ExecSQL ; if database1.InTransaction then
database1.Commit ;
database1.StartTransaction ;
try
database1.Commit ; STR1:=QUERY_CQ.FIELDBYNAME('CQM').ASSTRING;
query_CQ.close;
query_CQ.open;
QUERY_CQ.Locate ('CQM',STR1,[]);
TreeView1Change(Sender, PNODE);
except
database1.Rollback ;
MessageDlg('存储图不成功!', mterror, [mbOk], 0);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
str : TMemoryStream;
begin
if OpenDialog1.Execute then
begin
ds.DataSet.Insert;
str := TMemoryStream.Create;
str.LoadFromFile(OpenDialog1.FileName);
TBlobField(ds.DataSet.FieldByName(字段名)).LoadFromStream(str);
//文件赋值给指定字段,以下就可以做数据库操作了
ds.DataSet.Post;
end;
end;//读取
我是先把字段中的文件流保存到本地
TBlobField(ds.DataSet.FieldByName(字段名)).SaveToFile(文件名);
//然后打开,方法比较笨,高手可以来指教一下
//存储图片
MyJPEG := TJPEGImage.Create;
try
with MyJPEG do
begin
Assign(Image1.Picture.Graphic);
MS:=TMemoryStream.create;
SaveToStream(MS);
MS.Position:=0;
TBlobField(FieldbyName('图片')).LoadFromStream(MS);
end;
finally
MyJPEG.Free;
end;
try
Post;
except
showmessage('数据无法提交');读取图片的代码:
if ef_adoquery.RecordCount<>0 then
begin
try
tempstream:=TmemoryStream.Create();
//将图像字段保存到流中
TBlobField(mainform.ef_ADOQuery.FieldByName('图片')).SaveToStream(tempstream);
////给留定位
tempstream.Position:=0;
//省城临时image
tempjpeg:=TJPEGImage.Create;
//存留信息
tempjpeg.LoadFromStream(tempstream);
//显示图像
Image1.Picture.Bitmap.Assign(tempjpeg);
finally
tempstream.Free;
tempjpeg.Free;
end;
end;