小弟刚刚学delphi想做一个 人事系统 但不知道如何把图片从数据库中存取.
那位大哥,大姐知道的话一定要拉兄弟一把!!!
那位大哥,大姐知道的话一定要拉兄弟一把!!!
解决方案 »
- 请教WebServices,SOAPHTTPClient问题
- 请教大侠,delphi中有没有将一个字符串扩充的函数?
- 如何实现将Delphi程序注册为系统服务
- 用过DSPack的朋友请进。
- 关于CheckListBox的问题!!!求救
- 着急,求助!!!!!
- [求助]用WebBrowser取某个Table的内容,用For遍历Table里面所有的列,结果返回都是第一列..
- 向高手寻求仿 ODAC NET 的组件原理的源程序!!
- 大富翁服务器开始整修,请相互转告。请疯狂使用大富翁,10点半将关机,检修机器。
- 为什么同一进程,同一connection,只是不同时候修改了数据,会出现冲突???
- 小弟将从VC转Delphi,希望各位给点一件。求《inside VCL》电子书
- 出现“ambiguous column name ‘var'这个问题应如何解决?
//其中有些地方不是太严密,回去修改下。。
//delphi7+ sql2000通过.可以保存jpeg,jpg,bmp三种格式。unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, jpeg,DB, ADODB, ExtCtrls, Buttons, Grids, DBGrids,
DBCtrls;type
TForm1 = class(TForm)
ADOConnection1: TADOConnection;
ADOQuery1: TADOQuery;
Button1: TButton;
OpenDialog1: TOpenDialog;
Edit1: TEdit;
Image1: TImage;
Image2: TImage;
BitBtn1: TBitBtn;
DBGrid1: TDBGrid;
DataSource1: TDataSource;
ADOQuery1pic: TBlobField;
ADOQuery1borj: TStringField;
procedure Button1Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject); private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;
s:string;
s1:string;
implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
var
bitmap1:tbitmap;
pjpg:tjpegimage;
pic:TMemoryStream;begin
pjpg:=tjpegimage.Create;
if opendialog1.Execute
then
s:=opendialog1.FileName ;
s1:=extractfileext(s);
if (uppercase(s1) ='.JPG' ) or (uppercase(s1)='.JPEG') // 图片格式一定要大写
THEN
begin
pjpg.LoadFromFile(s );
pic:=TMemoryStream.Create;
pjpg.SaveToStream(pic);
image1.Picture.Bitmap.Assign(pjpg); pic.Position:=0;
adoquery1.Insert ;
adoquery1.FieldByName('borj').VALUE := 2;
TBlobField(adoquery1.FieldByName('pic')).LoadFromStream(pic);
adoquery1.post;
pic.Free;
pjpg.free;
end ; if (uppercase(s1)='.BMP') then begin
edit1.Text :=uppercase(s1); image1.Picture.LoadFromFile(s);
adoquery1.Insert ;
adoquery1.FieldByName('pic').Assign(image1.Picture.Graphic);
adoquery1.FieldByName('borj').VALUE := 3; adoquery1.Post ;
end;
end; procedure TForm1.BitBtn1Click(Sender: TObject); var
jpeg:tjpegimage;
begin
image1.Picture.Graphic :=nil;
with adoquery1 do
begin
if adoquery1.FieldByName('borj').Value =3 // bmp
then
image2.Picture.Bitmap.Assign(fieldbyname('pic')) ; if adoquery1.FieldByName('borj').Value =2 //jpge; then
begin
jpeg:=tjpegimage.Create ;
try
jpeg.Assign(adoquery1.FieldByName('pic') );
image2.Picture.Graphic:=jpeg;
finally
jpeg.Free ;
end;
end; end ;
end;end.
if FileExists(ImageFileName) then
begin
ADODataSet1.Edit;
Tblobfield(Image.DataBinding.Field).LoadFromFile( ImageFile);
ADODataSet1.Post;
end;其中 Image 为 cxDBImage 控件
try
with form1.ADOQuery1 do
begin
close;
sql.Clear;
sql.Add('insert into testi values (:a)');
parameters.ParamByName('a').LoadFromFile('D:\Photoshop\MyPicture\笑傲江湖.bmp',ftGraphic);
execsql;
end;
finally
end;
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.