请问如何将照片写入Access数据库里,请高手指点为! ( 积分: 100 )

  • 主题发起人 主题发起人 liebaojw
  • 开始时间 开始时间
L

liebaojw

Unregistered / Unconfirmed
GUEST, unregistred user!
我写了个通信录,可不知怎样才能将图片写入Access数据库里,请高手们给给点一下,最好能给详细的代码,谢谢!
 
我写了个通信录,可不知怎样才能将图片写入Access数据库里,请高手们给给点一下,最好能给详细的代码,谢谢!
 
利用数据流控制阿
 
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtDlgs, StdCtrls, ExtCtrls, DB, ADODB, jpeg, DBCtrls;

type
TForm1 = class(TForm)
Image1: TImage;
Button1: TButton;
Button2: TButton;
ADOConnection1: TADOConnection;
ADOQuery1: TADOQuery;
Image2: TImage;
OpenPictureDialog1: TOpenPictureDialog;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
M:TMemoryStream;
begin
////////////////////////////////////////////////////////////
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Text:='delete from a1';
ADOQuery1.ExecSQL; //这个和数据存储没有关系
//////////////////////////////////////////////////////////////
if OpenPictureDialog1.Execute then
begin
Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
end;
if Application.MessageBox('是否存入数据库?','提示',MB_OKCANCEL)<>1 then Exit;
M:=TMemoryStream.create;
Image1.Picture.graphic.SaveToStream(M);
M.Position:=0;
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Text:='insert into a1 values(:pic)';
ADOQuery1.Parameters.ParamByName('pic').LoadFromStream(M,ftBlob);
ADOQuery1.Prepared;
ADOQuery1.ExecSQL;
M.Free;
end;


procedure TForm1.Button2Click(Sender: TObject);
var
M:TStream;
T:TMemoryStream;
myimage: TJPEGImage; //<-只能读JPG Bmp使用TBitmap
begin
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Text:='select * from a1';
ADOQuery1.Open;
myimage:=TJPEGImage.Create;
M:=TMemoryStream.Create;
M:=ADOQuery1.CreateBlobStream(ADOQuery1.FieldByName('pic'),bmRead);
M.Position:=0;
T:=TMemoryStream.Create;
T.CopyFrom(M,M.Size);
T.Position:=0;
myimage.LoadFromStream(T);
Image2.Picture.Assign(myimage);
M.Free;
T.Free;
myimage.Free;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
V_Files:String;
begin
V_Files:=ExtractFilePath(Application.ExeName);
ADOConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Database Password=acmewaygetwordsystem; Data Source='+V_Files+'db1.mdb;Persist Security Info=False';
ADOConnection1.Connected:=True;
end;

end.
 
将字段设置为IMAGE
procedure Twlsp_glbf.BitBtn1Click(Sender: TObject);
var SImage: TADOBlobStream;
ret:integer;
begin
ret:=application.messagebox('是否已经调入照片,如果没有,程序将中断?','提示',mb_iconinformation+mb_okcancel);
if ret=1 then
if trim(e_mc.text)<>'' then
if wlsp_data.wlsp_glbf.Locate('wlsp_mc',trim(e_mc.text),[locaseinsensitive]) then
showmessage('该文件已存在')
else
begin
wlsp_data.wlsp_glbf.append;
wlsp_data.wlsp_glbf.FieldByName('wlsp_mc').AsString:=e_mc.text;
wlsp_data.wlsp_glbf.FieldByName('wlsp_tp').AsString := ExtractFileName(OpenDialog1.FileName);
SImage := TADOBlobStream.Create(TBlobField(wlsp_data.wlsp_glbf.FieldByName('wlsp_tp')), bmWrite);
SImage.LoadFromFile(OpenDialog1.Filename);
SImage.Free;
wlsp_data.wlsp_glbf.Post;
showmessage('保存成功!');
end
else
showmessage('文件名称不能为空');
end;
 
为什么存入的SQL换成update就不行呢
 
我想通过sql语句存取jpg图像,在网上看到了以下代码(做了一下修改),但出现错误了:update语法错误。怎么回事呢?请各位帮忙
各位如果有此方面的解决方法,请给出,谢谢了
var
M:TMemoryStream;
begin
if OpenPictureDialog1.Execute then
begin
Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
end;
if Application.MessageBox('是否存入数据库?','提示',MB_OKCANCEL)<>1 then Exit;
M:=TMemoryStream.create;
Image1.Picture.graphic.SaveToStream(M);
M.Position:=0;
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Text:='update 1 set image=:image where id=:id';
adoquery1.Parameters.ParamByName('id').value:='123';
ADOQuery1.Parameters.ParamByName('image').LoadFromStream(M,ftBlob);
ADOQuery1.Prepared;
ADOQuery1.ExecSQL;
M.Free;
end;
http://www.delphibbs.com/delphibbs/dispq.asp?lid=3057444
不好意思,楼主,请地方一用
 
用流存到库里,读出也用流。accesse不想prodox可以直接存位图
 
存图像,最好不要用sql,用table
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
716
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部