當前位置:首頁 » 操作系統 » 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-26 01:19:03 瀏覽:598
氟壓縮機房 發布:2024-10-26 01:09:45 瀏覽:405
httpurlconnection緩存 發布:2024-10-26 01:04:24 瀏覽:810
三星手機鎖屏怎麼設置密碼 發布:2024-10-26 01:00:35 瀏覽:847
計劃排程演算法 發布:2024-10-26 00:48:08 瀏覽:8
網站伺服器搭建與管理實訓報告 發布:2024-10-26 00:30:56 瀏覽:746
秦遙控駕駛是哪個配置 發布:2024-10-26 00:25:48 瀏覽:848
神鵰俠侶伺服器連接超時怎麼回事 發布:2024-10-26 00:25:28 瀏覽:381
11系統如何安裝安卓應用 發布:2024-10-26 00:22:40 瀏覽:713
rar解壓縮破解版 發布:2024-10-26 00:12:43 瀏覽:381