当前位置:首页 » 操作系统 » delphi图片数据库

delphi图片数据库

发布时间: 2022-05-21 12:05:53

‘壹’ delphi做储存图片和一个文件的数据库如何实现,用什么控件好啊 新手求助啊,谢谢

其实问题说得不是很清楚,存储图片和一个文件的数据?这是什么意思?

sql中image只是一个字段类型,又叫blob字段,它是用来存储文件流的,所以不管你的文件是什么类型的,包括(EXE,JPG,BMP)等都可以用楼上的方法进行存储,建议不要将文件存放到数据库中,非要这样做的话建议使用oracle数据库或者DB2

‘贰’ delphi 添加图片到数据库 怎么做的

用blob
首先存到流中
var
imgstream: TMemoryStream;
imgstream := TMemoryStream.Create;
imgstream.LoadFromFile(imgpath);
imgstream.Position := 0;
然后存到数据库就行了
QrySave.Close;
QrySave.SQL.Clear;
QrySave.SQL.Add('insert into mmsimgstore (id, class1, class2, filename, filetype, imgsize, img)');
QrySave.SQL.Add(' values (:id, :cl1, :cl2, :filename, :filetype, :imgsize, :img)');
QrySave.Params.FindParam('id').Value := id;
QrySave.Params.FindParam('cl1').Value := cl1;
QrySave.Params.FindParam('cl2').Value := cl2;
QrySave.Params.FindParam('filename').Value := fina;
QrySave.Params.FindParam('filetype').Value := fity;
QrySave.Params.FindParam('imgsize').Value := imgsize(imgstream);
QrySave.Params.FindParam('img').LoadFromStream(imgstream, ftBlob);
QrySave.ExecSQL;

‘叁’ delphi 中如何打开jpg图片,保存到数据库中并要打印

1打开jpg图片用Timage的picture属性.还可以加载tjpeg单位,用Tjpeg类直接处理也可以将picture中的jpg图片粘贴捣⒕貔板,在经由过程粘贴板写入字段.保存到数据库要应用流类(Tstream),将picture中的图片信息写入数据库的图像或二进制类型的字段打印时用quickreport页中的qrimage调出即可打印

‘肆’ delphi通过image组件保存读取图片至数据库怎么写

var Stream:TMemoryStream;
begin
try
Stream := TMemoryStream.Create; // 创建内存流 Image1.Picture.Graphic.SaveToStream(Stream); // 将图片保存到内存流中
adoquery1.Close; adoquery1.SQL.Clear; adoQuery1.SQL.Add('Insert into test3 values (:id,:photo)'); ADOQuery1.Parameters.ParamByName('id').Value := editId.Text; adoQuery1.Parameters.ParamByName('photo').LoadFromStream(Stream,ftBlob); // 读取保存的内存图 adoquery1.ExecSQL;
finally
Stream.Free; // 释放内存流
end;
end;

‘伍’ delphi 图片保存到数据库

DELPHI 的语句不大熟悉,我给你写段VB的,你该一下变量的定义就可以了
Dim cnnImage As New ADODB.Connection
Dim rsImage As New ADODB.Recordset
Dim strSql As String

Dim Chunk() As Byte
Dim lngLengh As Long
Dim intChunks As Integer
Dim intFragment As Integer
Const ChunkSize = 1000
Const lngDataFile = 1
Private Sub cmdBrowse_Click()
'选择 JPG OR Bmp 文件
On Error Resume Next
With cmdlFilePath
.Filter = "JPG Files|*.JPG|Bitmaps|*.BMP"
.ShowOpen
txtFilePath.Text = .FileName
End With
End Sub
Private Sub cmdExit_Click()
End
End Sub
Private Sub cmdLast_Click()
On Error Resume Next
rsImage.MoveLast
Call ShowPic
End Sub
Private Sub cmdNext_Click()
On Error Resume Next
rsImage.MoveNext
Call ShowPic
End Sub
Private Sub cmdPrev_Click()
On Error Resume Next
rsImage.MovePrevious
Call ShowPic
End Sub
Private Sub cmdSave_Click()
'保存文件到数据库中
If Trim(txtFilePath.Text) = "" Then
MsgBox "未选择文件.!!", vbInformation + vbSystemModal, "保存出错"
Exit Sub
End If
If (Dir(Trim(txtFilePath.Text)) = "") Then Exit Sub
'以二进制方式打开文件
Open Trim(txtFilePath.Text) For Binary Access Read As lngDataFile
lngLengh = LOF(lngDataFile) ' 文件大小
If lngLengh = 0 Then Close lngDataFile: Exit Sub
intChunks = lngLengh \ ChunkSize
intFragment = lngLengh Mod ChunkSize
'新建记录
rsImage.AddNew
ReDim Chunk(intFragment)
Get lngDataFile, , Chunk()
rsImage!picImage.AppendChunk Chunk()
ReDim Chunk(ChunkSize)
For I = 1 To intChunks
Get lngDataFile, , Chunk()
rsImage!picImage.AppendChunk Chunk()
Next I
rsImage.Update
Close lngDataFile
Call ShowPic
End Sub
Private Sub cmdFirst_Click()
On Error Resume Next
rsImage.MoveFirst
Call ShowPic
End Sub
Private Sub Form_Load()
rsImage.LockType = adLockOptimistic
rsImage.CursorType = adOpenKeyset
cnnImage.Provider = "Microsoft.Jet.OLEDB.4.0"
strSql = App.Path & "\Image.mdb"
cnnImage.Open strSql
strSql = "Select * From ImageStore"
rsImage.Open strSql, cnnImage
If (rsImage.BOF = True) And (rsImage.EOF = True) Then Exit Sub
Call cmdFirst_Click
End Sub
Public Sub ShowPic()
On Error Resume Next
Open "pictemp" For Binary Access Write As lngDataFile
lngLengh = rsImage!picImage.ActualSize
intChunks = lngLengh \ ChunkSize
intFragment = lngLengh Mod ChunkSize
ReDim Chunk(intFragment)
Chunk() = rsImage!picImage.GetChunk(intFragment)
Put lngDataFile, , Chunk()
For I = 1 To intChunks
ReDim Buffer(ChunkSize)
Chunk() = rsImage!picImage.GetChunk(ChunkSize)
'建立图片临时文件
Put lngDataFile, , Chunk()
Next I
Close lngDataFile
FileName = "pictemp"
Picture1.Picture = LoadPicture(FileName)
End Sub
GOOD LUCK
用软件改变世界,用代码书写人生,用思想创造未来!

‘陆’ delphi 中怎样打开jpg图片,保存到数据库中并要打印

打开图片(.jpg和.bmp都可以)
var
bmp:TBitmap;
jpg:TJpegImage;
temp:string;
sum:string;
i,j:integer;
jj,bb:boolean;
begin
if openpicturedialog1.Execute then
begin
edit1.Text:=openpicturedialog1.FileName;
bmp:=TBitmap.create;
jj:= AnsiEndsText('.jpg',edit1.Text);//看看是jpg文件还是bmp文件
bb:= AnsiEndsText('.bmp',edit1.Text);
if jj then
begin
Jpg:=TJpegImage.Create;
Jpg.LoadFromFile(openpicturedialog1.FileName);
bmp.assign(jpg);
jpg.free;
key:=extractfilename(edit1.Text);//将jpg转化bmp
sum:=key;
i:=length(sum);
i:=i-4;
temp:='';
for j:=1 to i do
begin
temp:=temp+sum[j];
end;

key:=temp;
key:=key+'.bmp';

bmp.savetofile(key);//转化结束,因为mysql不能存jpg
biao:=1;
end
else if bb then
begin
bmp.LoadFromFile(openpicturedialog1.FileName);
key:=extractfilename(edit1.Text);
biao:=0;
end;
image1.Picture.LoadFromFile(openpicturedialog1.FileName);
bmp.free;
end;
保存图片:
var
Picture1:TPicture;
begin // 保存图片到数据库中
Picture1:=TPicture.create;
try
try
if fileexists(edit1.text) then
with ADOtable1 do
begin
adotable1.Close;
adotable1.Open;

Picture1.LoadFromFile(key);
if Locate('name',extractfilename(edit1.text),[loCaseInsensitive])=false then
begin
indexfieldnames:='name';
ADOtable1.Insert;
Fields[0].AsString:=extractfilename(key);
Fields[1].Assign(Picture1);
Post;
showmessage('图象保存成功!');
end
else
showmessage('图象已经存在!');
end;
finally
Picture1.Free;
bmp1.Free;
end;
except
showmessage('图象保存失败!');
end;

if biao=1 then
DeleteFile(key);
end;

打印则qreport中的qrimage,或者是fastrepot exports中的frBMPExport和frJPEGExport!!

‘柒’ Delphi求将image中的图片保存到数据库中代码

procere TSqlHelp.WritePic(AResenderMark,AItem:string;AItemValue:TStream);
begin
if (AResenderMark='') or (AItem='') then exit;
try
if not m_Connection.Connected then m_Connection.Connected:=True;
m_Connection.BeginTrans;
//showmessage(m_Connection.ConnectionString);
with m_QryWork do
begin
Close;
Sql.Clear;
Sql.Add('select * from zxx_sqlhelperData where ResenderMark=:ResenderMark and Item=:Item');
Parameters.ParamByName('ResenderMark').Value:=AResenderMark;
Parameters.ParamByName('Item').Value:=AItem;
Open;
if RecordCount=0 then
begin
append;
FieldByname('ResenderMark').AsString:=AResenderMark;
FieldByName('Item').AsString:=AItem;
TBlobField(FieldByName('ValuePic')).LoadFromStream(AItemValue);
Post;
end
else
begin
Edit;
TBlobField(FieldByName('ValuePic')).Clear;
Post;
Edit;
TBlobField(FieldByName('ValuePic')).LoadFromStream(AItemValue);
Post;
end
end;
m_Connection.CommitTrans;
except
on e:Exception do
begin
m_Connection.RollbackTrans;
//如果发现是线程问题比如到了最大连接数则可递归保存
//if pos('',e.Message)>0 then
//begin
// sleep(300);
// WriteData(AResenderMark,AItem,AItemValue);
// exit;
//end;

messagebox(Application.MainForm.Handle,pchar(e.Message),PAnsiChar(AResenderMark+'提示信息'),MB_OK or MB_ICONWARNING);
end;
end;
end;

‘捌’ 如何读取delphi数据库中的图片

第7章 数据库处理实例

实例122 在数据库中存取图像

本实例演示如何在数据库中存取图像文件。

向窗体上添加一个TListBox组件、一个TImage组件和一个TTable组件,设计完成的主界面如图7-13所示。

图7-13 主界面

本系统中需要设计一个新的基于Paradox 7的数据库Image.db,图7-14为设计完成的Image.db数据库。

图7-14 设计完成的数据库

为了方便测试程序,Image.db数据库存储在实例程序所在的路径下。

设置TTable组件的TableName属性为Image.db,Active属性为True。

在程序运行初期,首先会判断Image.db数据库中是否存在记录,如果没有记录存在,那么就执行以下代码向Image.db数据库中添加“鸟.bmp”文件:

procere TForm1.FormCreate(Sender: TObject);

var

mem:TMemoryStream;

begin

if Table1.Eof and Table1.Bof then

begin

with Table1 do

begin

Insert;

FieldByName('Name').AsString:='鸟';

mem:=TMemoryStream.Create();

mem.LoadFromFile('鸟.bmp');

TBlobField(FieldByName('Data')).LoadFromStream(mem);

Post;

end;

end;

end;

然后按照相同的方式顺序向Image.db数据库中添加“样品.wav”、“叶子.wav”和“荷花”图像文件。

最后通过下面的代码把Image.db数据库中存储的文件名字添加到窗体的TListBox组件中:

with Table1 do

begin

First;

while not Eof do

begin

ListBox1.Items.Add(FieldByName('Name').AsString);

Next;

end;

end;

在程序运行过程中,如果用户在窗体的TListBox组件中选择了图像文件,程序会通过TTable组件的First方法把数据表中的第1条记录作为当前记录,然后通过一个循环来遍历数据库中的记录。如果某条记录中Name字段的内容和用户的选择相同,那么就把该记录中Data字段中的图像信息读取出来,并且把图像显示在窗体上的TImage组件上。代码如下:

procere TForm1.ListBox1Click(Sender: TObject);

var

mem:TStream;

bmp:TBitmap;

begin

with Table1 do

begin

First;

while not Eof do

begin

if FieldByName('Name').AsString=ListBox1.Items[ListBox1.ItemIndex] then

break;

Next;

end;

bmp:=TBitmap.Create;

mem:=CreateBlobStream(FieldByName('Data'),bmRead);

mem.Position:=0;

bmp.LoadFromStream(mem);

self.Image1.Picture.Assign(bmp);

bmp.Free;

mem.Free;

end;

end;

程序代码如下:

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, DB, DBTables,mmsystem, ExtCtrls;

type

TForm1 = class(TForm)

ListBox1: TListBox;

Table1: TTable;

Image1: TImage;

procere FormCreate(Sender: TObject);

procere ListBox1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

procere TForm1.FormCreate(Sender: TObject);

var

mem:TMemoryStream;

begin

if Table1.Eof and Table1.Bof then

begin

with Table1 do

begin

Insert;

FieldByName('Name').AsString:='鸟';

mem:=TMemoryStream.Create();

mem.LoadFromFile('鸟.bmp');

TBlobField(FieldByName('Data')).LoadFromStream(mem);

Post;

Insert;

FieldByName('Name').AsString:='样品';

mem:=TMemoryStream.Create();

mem.LoadFromFile('样品.bmp');

TBlobField(FieldByName('Data')).LoadFromStream(mem);

Post;

Insert;

FieldByName('Name').AsString:='叶子';

mem:=TMemoryStream.Create();

mem.LoadFromFile('叶子.bmp');

TBlobField(FieldByName('Data')).LoadFromStream(mem);

Post;

Insert;

FieldByName('Name').AsString:='荷花';

mem:=TMemoryStream.Create();

mem.LoadFromFile('荷花.bmp');

TBlobField(FieldByName('Data')).LoadFromStream(mem);

Post;

mem.Free;

end;

end;

with Table1 do

begin

First;

while not Eof do

begin

ListBox1.Items.Add(FieldByName('Name').AsString);

Next;

end;

end;

end;

procere TForm1.ListBox1Click(Sender: TObject);

var

mem:TStream;

bmp:TBitmap;

begin

with Table1 do

begin

First;

while not Eof do

begin

if FieldByName('Name').AsString=ListBox1.Items[ListBox1.ItemIndex] then

break;

Next;

end;

bmp:=TBitmap.Create;

mem:=CreateBlobStream(FieldByName('Data'),bmRead);

mem.Position:=0;

bmp.LoadFromStream(mem);

self.Image1.Picture.Assign(bmp);

bmp.Free;

mem.Free;

end;

end;

end.

保存文件,然后按F9键运行程序,程序运行的初始画面如图7-15所示。

在TListBox组件中选中一项后,就会显示相对应的图像文件,如图7-16所示。

图7-15 程序运行的初始画面 图7-16 程序运行结果

‘玖’ 用delphi如何将图片保存到数据库中

把图片读成数据流,就可以写到ORACLE数据库中的BLOB字段中了,写到ORACLE中时,也要用写入流的形式.

如果是MYSQL就简单的,把图片文件读成一个字串,写字串到BLOB中,和STRING一样的方式

‘拾’ delphi image图片如何插入到数据库

procere TForm1.Button1Click(Sender: TObject);
var Conn:TAdoConnection;
strm:TStream;
qry:TAdoQuery;
begin
strm:=TMemoryStream.Create;
image1.Picture.Bitmap.SaveToStream(strm);
conn:=TAdoConnection.Create(nil);
conn.ConnectionString:='provider=Microsoft.Jet.OleDB.4.0;Data Source=d:\a.mdb';
conn.LoginPrompt:=false;
conn.Open;
qry:=TAdoQuery.Create(nil);
qry.SQL.Text := 'insert into test(pic) values (:pic)';
qry.Connection :=conn;
qry.Parameters.ParseSQL(qry.SQL.Text ,true);
qry.Parameters.ParamByName('pic').LoadFromStream(strm,ftBlob);
qry.ExecSQL;
conn.Close;
conn.Free;
qry.Free;
strm.Free;

end;

procere TForm1.Button2Click(Sender: TObject);
var Conn:TAdoConnection;
strm:TStream;
qry:TAdoQuery;
begin
conn:=TAdoConnection.Create(nil);
conn.ConnectionString:='provider=Microsoft.Jet.OleDB.4.0;Data Source=d:\a.mdb';
conn.LoginPrompt:=false;
conn.Open;
qry:=TAdoQuery.Create(nil);
qry.SQL.Text := 'select pic from test';
qry.Connection :=conn;
qry.Open ;
strm:=qry.CreateBlobStream(qry.FieldByName('pic'),bmRead);
image2.Picture.Bitmap.LoadFromStream(strm);
qry.Close;
conn.Close;
conn.Free;
qry.Free;
strm.Free;

end;

procere TForm1.FormShow(Sender: TObject);
var jpg:TJpegImage;
bmp:TBitMap;
begin
jpg:=TJpegImage.Create;
bmp:=TBitMap.Create;
jpg.LoadFromFile('C:\Users\Administrator\Pictures\psu.jpg');
bmp.Assign(jpg);
image1.Picture.Bitmap:=bmp;
end;

热点内容
存储过程性能 发布:2024-10-25 23:35:39 浏览:111
同一个ip是不是同一个服务器 发布:2024-10-25 23:33:15 浏览:518
为啥c语言要编译器啊 发布:2024-10-25 23:32:38 浏览:218
快存储 发布:2024-10-25 23:31:05 浏览:286
算法制造 发布:2024-10-25 23:11:27 浏览:886
台式电脑安装哪个安卓系统好 发布:2024-10-25 23:11:25 浏览:114
怎么样学电脑编程 发布:2024-10-25 23:10:13 浏览:524
安卓手机内存占用太多如何清理 发布:2024-10-25 23:03:53 浏览:910
swift项目编译 发布:2024-10-25 22:53:12 浏览:963
迈锐宝买哪个配置合算 发布:2024-10-25 22:28:59 浏览:994