给你个示例,下面是读取数据库中的二进制数据,并存放到指定的地方的,读取的,应该差不多
strSQL = "select From CodeFile where CodeID=" & ID
RsOpen strSQL, Conn, 1, 3
While Not RsEOF
FileName = Rs("FileName")Value
Str = Rs("FileContent")GetChunk(Rs("FileContent")ActualSize)
Call SaveFile(Str, AppPath & "\Tmp\" & FileName)
RsMoveNext
Wend
'下面是SaveFile的过程
Public Sub SaveFile(Str, fName)
Dim objstream As New ADODBStream
'--------------建立ADODBStream对象,必须要ADO 25以上版本---------
objstreamType = 1
'-------------以二进制模式打开-------------------------------------
objstreamOpen
'--------------------将字符串内容写入缓冲--------------------------
objstreamWrite Str
'--------------------将缓冲的内容写入文件--------------------------
objstreamSaveToFile fName, 1
objstreamClose
Set objstream = Nothing
'-----------------------关闭对象,释放资源-------------------------
End Sub
网站上不能这样存路径,这种路径是没用的,对于网站来说,我不清楚你这个是后台上传的还是自己手填到数据库的,原理都一样,比如是用后台上传的,那应该把上传后保存到网站的一个固定的目录,比如存在网站根目录下的upload目录(假定名为123jpg),那你数据库中的保存的路径就应该是比如/upload/123jpg
然后下面的页面代码就可以不用改了。
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ExtCtrls, DB, ADODB,jpeg, DBCtrls, Mask;type
TForm1 = class(TForm)
con1: TADOConnection;
qry1: TADOQuery;
img1: TImage;
btn1: TBitBtn;
btn2: TBitBtn;
OpenDialog1: TOpenDialog;
lbl1: TLabel;
edt1: TEdit;
lbl2: TLabel;
edt2: TEdit;
dbnvgr1: TDBNavigator;
ds1: TDataSource;
qry2: TADOQuery;
img2: TImage;
btn3: TBitBtn;
procedure FormShow(Sender: TObject);
procedure btn1Click(Sender: TObject);
procedure btn2Click(Sender: TObject);
procedure btn3Click(Sender: TObject);
procedure dbnvgr1Click(Sender: TObject; Button: TNavigateBtn);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R dfm}procedure TForm1btn1Click(Sender: TObject);
var
ms:TMemoryStream;
jpg:TJPEGImage;
begin
ms:=TMemoryStreamCreate;
jpg:=TJPEGImageCreate;
jpgAssign(img1PictureGraphic);
jpgSaveToStream(ms);
msPosition:=0;
qry1SQLClear;
qry1SQLAdd('Insert Into TIMG(PNAME,PINFO,PPHOTO) values(:pname,:pinfo,:pphoto)');
qry1ParametersParamByName('pname')Value:=edt1Text;
qry1ParametersParamByName('pinfo')Value:=edt2Text;
qry1ParametersParamByName('pphoto')LoadFromStream(ms,ftBlob);
qry1ExecSQL;
jpgFree;
msFree;
end;procedure TForm1btn2Click(Sender: TObject);
begin
if OpenDialog1Execute then
img1PictureLoadFromFile(OpenDialog1FileName);
end;procedure TForm1btn3Click(Sender: TObject);
var
ms:TMemoryStream;
jpg:TJPEGImage;
begin
if not qry2FieldByName('PPHOTO')IsNull then
begin
ms:=TMemoryStreamCreate;
jpg:=TJPEGImageCreate;
TBlobField(qry2FieldByName('PPHOTO'))SaveToStream(ms);
msPosition:=0;
jpgLoadFromStream(ms);
img2PictureAssign(jpg);
end;
end;procedure TForm1dbnvgr1Click(Sender: TObject; Button: TNavigateBtn);
begin
btn3Click;
end;procedure TForm1FormShow(Sender: TObject);
begin
con1Close;
con1ConnectionString:='Driver=Firebird/Interbase(r) driver;UID=SYSDBA;PWD'+
'=123456;Dbname='+ExtractFilePath(ApplicationExeName)+'IMGFDB';
con1LoginPrompt:=False;
con1Connected:=True; qry2Active:=True;
//img2DataField:='PPHOTO';
end;end 我用的是Firebird数据库,存放的字段名是PPHOTO,数据类型是BLOB,其他数据库应该也差不多。
以上就是关于关于VB 6 怎样读取Access数据库中的图片(ole类型数据)和调用chn帮助文件全部的内容,包括:关于VB 6 怎样读取Access数据库中的图片(ole类型数据)和调用chn帮助文件、c#中如何根据数据库中的路径读取图片、在delphi中如何取出数据库中的图片显示在image上等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)