请教我用DELPHI如何把图象保存到数据库,SQL SERVER2000数据库,表的数据类型是IMAGE,DELPHI控件IMAGE显示图象?请教如何将图象保存到数据库中???????急急急急急急急急急急
解决方案 »
- FastReport的数字预览显示,在界面又不显示。
- 字符串 转换成 键值!!!比如把 'F1’ 这个字符串转换成键值!
- delphi 7.0中 的SYSDATE 提示 在此上下文中不允许使用'SYSDATE'此处只允许使用常量 表达式 或者变量 不允许使用列名
- 我想单独用一个线程来做文件的拷贝工作,请大家帮忙看下我的代码,看这样写对不(第一次接触线程)谢谢!!
- 写入注册表的这个方法怎么没用?
- 如何获得指定目录下的全部文件大小,急!
- 这是什么错误提示啊?烦死了
- 一个小问题,非常非常小,两个毫无关系的表,如何把它们按从左到右拼起来
- 公司化了4年搞的架构,大家看看是否有前途,有钱途!
- 在DELPHI里面如何给ACTIVECONTROL重新排序。
- 多表查询与DBgrid更新数据的问题!
- ADO怎麼連VFP之‘.dbf'表?急急
Fields Editor,就会出现一个列表框, 再对列表框点右键,选择
Add All Fields.保存图像的字段类型要为Memo或Ole类型(对Foxpro库而言),使用该字段的
LoadFromFile方法就可以把文件保存进库中了,保存完成后,用DbImage控件就
可以把它显示出来.比如表名为Table1,该字段命名为BMP,在建立永久字段对象后就出现了Table1BMP
这个永久字段对像,使用Table1bmp.Loadformfile('文件名')就行了.
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,jpeg,
ExtDlgs, Db, DBTables, StdCtrls, ExtCtrls, ADODB;type
TForm1 = class(TForm)
Button1: TButton;
OpenPictureDialog1: TOpenPictureDialog;
Button2: TButton;
Image1: TImage;
ADOQuery1: TADOQuery;
ADOQuery2: TADOQuery;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
filename:string;
procedure SetPicture(pos:string;TempQuery:TADOQuery); /////往数据库中插入图片
procedure GetPicture(pos:string;TempQuery:TADOQuery); ////得到图片
end;var
Form1: TForm1;implementation{$R *.DFM}{ TForm1 }procedure TForm1.GetPicture(pos:string;TempQuery: TADOQuery);
var
MS_JpegStream:TMemoryStream;
begin
try
MS_JpegStream:=TMemoryStream.Create;
with tempQuery do
begin
close;
sql.clear;
//修改这个语句
sql.Add('select picture from table where no=:pos');
Parameters.ParamByName('pos').value:=pos;
Open;
end;
if tempquery.FieldByName('image').isnull then
begin
image1.Picture.Graphic:=nil;
end
else
begin
(tempQuery.FieldByName('image') as tblobfield).savetostream(MS_JpegStream);
image1.Picture.Graphic:=nil;
image1.Picture.Graphic:=TJpegImage.Create;
MS_JpegStream.Position:=0;
image1.Picture.Graphic.LoadFromStream(MS_JpegStream);
end; finally
MS_JpegStream.Free;
end;end;procedure TForm1.SetPicture(pos:string; TempQuery: TADOQuery);
var
MS_JpegStream:TMemoryStream;
M_BitMap:TBitMap;
M_Jpeg:TJpegImage;
begin
try
MS_JpegStream:=TMemoryStream.Create;
M_BitMap:=TBitMap.Create;
M_Jpeg:=TJpegImage.Create;
if extractfileext(filename)='.bmp' then
begin
M_BitMap.LoadFromFile(filename);
M_Jpeg.Compress;
M_Jpeg.Assign(M_BitMap);
end
else if extractfileext(filename)='.jpg' then
begin
M_Jpeg.LoadFromFile(filename);
end;
M_Jpeg.SaveToStream(MS_JpegStream);
with tempQuery do
begin
close;
sql.clear;
//修改这个语句
sql.Add('insert into table (no,IMage) values (:pos,:image)');
Parameters.ParamByName('pos').Value:=pos;
Parameters.ParamByName('image').LoadFromStream(MS_JpegStream,ftblob); ExecSQL;
end;
finally
MS_JpegStream.Free;
M_BitMap.Free;
M_Jpeg.Free;
end;
end;procedure TForm1.Button1Click(Sender: TObject);//打开图片并写入数据库
begin
if openpicturedialog1.Execute then
begin
filename:=openpicturedialog1.FileName;
SetPicture(edit1.text,ADOQuery1);
end
end;procedure TForm1.Button2Click(Sender: TObject);//显示图片
begin
getpicture(edit1.text,ADOQuery2);
end;end.
然后再delphi中通过流来保存。
然后 TBOLBFile(‘这个冬冬我忘了这样写不知道对不对 ^_^’)(ADOQuery.FieldByName('')).LoadFromStream(流变量);流变量声明 :st : TMemoryStream;