怎樣向SQL Server插入帶有Image欄位的記錄
向SQL Server插入記錄相信大家都會做,但是如果表中帶有Image欄位就不好弄了,這裡有一個例子,非常安全,同時也向大家展示動態產生控制項的技巧(對高手來說班門弄斧了)
procedure Button1Click(Sender:TObject);
var
Query : TQuery;
StringStream : TStringStream;
begin
StringStream := TStringStream.Create ('');
Memo.Lines.SaveToStream (StringStream); //在這裡建立一個字元流
StringStream.Position := 0;
Query := TQuery.Create(self); //在這裡建立一個臨時的Query
Query.DatabaseName := Database.DatabaseName;
with Query.SQL do
begin
Clear;
Append ('INSERT INTO TEST');
Append ('(ID,CONTENT)'); //CONTENT是一個Image欄位
Append ('VALUES (:ID, :CONTENT)');
end;
with Query do
begin
ParamByName ('ID').asInteger := StrToIntDef (edtID.Text,0);
ParamByName ('CONTENT').asBlob := StringStream.DataString; //就在這裡賦值
end;
StringStream.Free; //用完了馬上Free掉
Database.StartTransaction; //開始事務控制
try
Query.ExecSQL; //開始插入記錄
Database.Commit; //提交事務
except
Query.Free; //如果出錯首先將Query Free掉
Database.RollBack; //回退事務
raise; //重新引發異常,以通知使用者
end;
Query.free;
end;