1. 程式人生 > >delphi使用ADO在sql資料庫存取圖片的方法

delphi使用ADO在sql資料庫存取圖片的方法

我一直不認為能把程式碼寫的和天書一樣的程式設計師是好的程式設計師,那不過是因為我真的對delphi也就是略懂皮毛,太深了看不懂。
網上查詢資料庫存取圖片的方式,看的是一頭霧水,有人提出儲存路徑使用時再呼叫,方法很好,但現實很殘酷,在客戶端使用時才發現,無法呼叫伺服器端的路徑和圖片(我指的伺服器也就是一臺部門使用的普通的PC機,只不過是安裝了資料庫而已)。使用網路路徑需要將伺服器端的圖片目錄共享,或者使用FTP上傳下載,不是不安全,就是很麻煩。
一個部門也就200人左右,儲存成圖片,規格小一點,資料庫應該不會太大,呼叫速度應該不會太慢的,於是又迴歸了資料庫儲存的思路。
人懶了寫程式碼就願意少一點,研究後才發現,網上那些複雜的程式碼就是故意讓人們發暈的。
只為了演示如何存取,什麼控制元件、路徑、對話方塊什麼的就省了,知道怎麼儲存和取出圖片就行了。sql資料庫圖片欄位使用image型別,儲存時如果要顯示圖片建議使用TImage,取圖顯示時建議使用TDBImage。

儲存圖片
procedure TForm1.Button1Click(Sender: TObject);
var
  Picture1: TPicture;
begin
  Picture1 := TPicture.create;
  Picture1.loadfromfile('你自己定義的圖片路徑+名字.bmp'); 
  image1.picture.loadfromfile('你自己定義的圖片路徑+名字.bmp');
  ADOQuery1.Close;
  ADOQuery1.sql.clear;
  ADOQuery1.sql.add('insert into pic values(:名字,:圖片) ');
  ADOQuery1.Parameters.ParamByName('名字').Value :='你自己定義的名字';
  ADOQuery1.Parameters.ParamByName('圖片').Assign(Picture1);
  ADOQuery1.ExecSQL;
  Picture1.Free;
end;

取出圖片
procedure TForm1.Button2Click(Sender: TObject);
begin
  ADOQuery1.Close;
  ADOQuery1.sql.clear;
  ADOQuery1.sql.add('select * from pic where 名字:=名字');
  ADOQuery1.Parameters.ParamByName('名字').Value :='你自己查詢的名字';
  ADOQuery1.Open;
  DBEdit1.Text:=ADOQuery1.FieldByName('名字').AsString;
  DBImage1.DataField:='圖片';        //可在屬性裡直接設定
  DBImage1.DataSource:=DataSource1;    //可在屬性裡直接設定

end;

建議:該方法只支援image格式的圖片,tiff格式的圖片支援儲存,取出時還需要自己捉摸一下。在應用期間查詢時,建議其他欄位和image資料型別的欄位分開查詢,尤其是遍歷資料庫記錄時,否則記錄多了速度會很慢。
---------------------
作者:秋天之落葉
來源:CSDN
原文:https://blog.csdn.net/leavesguth/article/details/76178153
版權宣告:本文為博主原創文章,轉載請附上博文連結!