1 頁 (共 1 頁)

image欄位及TBlobField配合參數的sql command存取方法

發表於 : 2008年 11月 28日, 16:06
tim
BDE, SQL Server, image, TBlobField, Params

http://delphi.ktop.com.tw/topic.asp?TOPIC_ID=64122

這種欄位一般是用 TBlobField 來處理, 配合 TMemoryStream 來進行會比較理想, 請參考,

代碼: 選擇全部

var
 ms: TMemoryStream;
 size: integer;
...
Query.Close;
Query.SQL.Clear;
Query.SQL.Add('INSERT INTO B ');
Query.SQL.Add(' (ID, NAM, PCT, PRICE) ');
Query.SQL.Add('valueS ');
Query.SQL.Add(' (:ID, :NAM, :PCT, :PRICE) ');
Query.ParamByName('ID').value = A.FieldByName('ID').value;
Query.ParamByName('NAM').Valie = A.FieldByName('NAM').value;

size := TBlobField(A.FieldByName('PCT')).BlobSize;
ms := TMemoryStream.Create;
ms.Size := size;
TBlobField(A.FieldByName('PCT')).SaveToStream(ms);
Query.ParamByName('PCT').SetBlobData(ms.Memory, ms.Size);

Query.ParamByName('PRICE').value = A.FieldByName('PRICE').value;
Query.ExecSQL;
ms.Free;
但仍提醒, 除了效能上會較差外, 還得注意到使用 BDE 這組資料存取時, 對於 Blob 資料的預設大小為 32k, 若該欄位資料會大於 32k時, 請在 TDatabase 元件上的 BLOB SIZE 設為更大, 如 1024 就有 1mb 囉, 請特別注意!!