最近在CSDN上看到两篇关于《DELPHI中存取JPEG文件到SQLSERVER》中的文章之后,觉得其中讲述的方法虽然有可取之处,但颇费时,我这里有更简单的操作方法,而且安全可靠,不敢一人独享,愿发布出来与大家共享。在Delphi7.0+Win2000+SqlServer 2000中测试通过,运行良好,现将思路、源码公开如下:
解决思路:
1、 关键在于将打开的JPEG文件动态转换为Tbitmap对象并显示在Timage对象中;
2、 将显示的图片提交到数据库中。
本例中在SQLSERVER2000中建立了一个试例表:exam(xm char(10),photo image);
程序源代码:
unit SavePic;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtDlgs, ExtCtrls, DBCtrls, Grids, DBGrids, DB, ADODB, Buttons,
StdCtrls,Jpeg;
type
TForm1 = class(TForm)
SpeedButton1: TSpeedButton;
ADOConnection1: TADOConnection;
Table1: TADOTable;
DataSource1: TDataSource;
DBGrid1: TDBGrid;
DBImage1: TDBImage;
Image1: TImage;
SpeedButton2: TSpeedButton;
OpenPictureDialog1: TOpenPictureDialog;
Label1: TLabel;
Label2: TLabel;
Edit1: TEdit;
SpeedButton3: TSpeedButton;
procedure SpeedButton2Click(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
procedure SpeedButton3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.SpeedButton2Click(Sender: TObject);
var
bmp1:TBitmap;
jpg1:TJpegImage;
begin
OpenPictureDialog1.DefaultExt:=GraphicExtension(TJpegimage);
if OpenPictureDialog1.Execute then
begin
bmp1:=TBitmap.Create;
jpg1:=TJpegImage.Create;
try
jpg1.LoadFromFile(OpenPictureDialog1.FileName);
bmp1.Assign(jpg1);
Image1.Picture.Bitmap.Assign(bmp1);
finally
jpg1.Free;
bmp1.Free;
end;
end;
end;
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
table1.Open;
table1.insert;
table1.fieldbyname('xm').asstring:=Edit1.Text;
table1.FieldByName('photo').Assign(Image1.Picture);
table1.post;
table1.Refresh;
end;
end.