全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2351
推到 Plurk!
推到 Facebook!

請問dbExpress如何存入圖檔到資料庫

答題得分者是:GrandRURU
taxchen
一般會員


發表:15
回覆:19
積分:6
註冊:2002-03-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-09-28 14:28:32 IP:202.132.xxx.xxx 訂閱
請問各位,
使用Delphi 7 dbExpress如何存入圖檔到SQL Server的image欄位?
我搜尋到的都是BDE or ADO, 請各位幫忙.

謝謝
GrandRURU
站務副站長


發表:240
回覆:1680
積分:1874
註冊:2005-06-21

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-09-28 17:13:53 IP:203.75.xxx.xxx 未訂閱
觀念差不多
只要將DBImage指向ClientDataSet的IMAGE欄位,即可指定

===================引 用 taxchen 文 章===================
請問各位,
使用Delphi 7 dbExpress如何存入圖檔到SQL Server的image欄位?
我搜尋到的都是BDE or ADO, 請各位幫忙.

謝謝
taxchen
一般會員


發表:15
回覆:19
積分:6
註冊:2002-03-13

發送簡訊給我
#3 引用回覆 回覆 發表時間:2009-09-29 09:31:12 IP:202.132.xxx.xxx 訂閱
不好意思, 我不是很懂你的意思,
我的希望是拉一個image的元件, 讓user透過openDialog選擇jpg, 然後在輸入其他欄位的值
接著按下新增, insert到資料庫.

可否可以貼個sample code上來給我看一下.

感謝.
GrandRURU
站務副站長


發表:240
回覆:1680
積分:1874
註冊:2005-06-21

發送簡訊給我
#4 引用回覆 回覆 發表時間:2009-09-29 13:01:28 IP:203.75.xxx.xxx 未訂閱
http://delphi.ktop.com.tw/board.php?cid=30&fid=66&tid=38346


===================引 用 taxchen 文 章===================
不好意思, 我不是很懂你的意思,
我的希望是拉一個image的元件, 讓user透過openDialog選擇jpg, 然後在輸入其他欄位的值
接著按下新增, insert到資料庫.

可否可以貼個sample code上來給我看一下.

感謝.
taxchen
一般會員


發表:15
回覆:19
積分:6
註冊:2002-03-13

發送簡訊給我
#5 引用回覆 回覆 發表時間:2009-09-29 13:52:49 IP:202.132.xxx.xxx 訂閱
我的程式碼如下:

var
sqlSelect : string;
ss : tmemorystream;
begin
SS:=TMemoryStream.Create;
self.Image1.Picture.Graphic.SaveToStream(ss);
sqlSelect := 'insert into img_table (img, description) values(:q1, :q2)';
self.SQLDataSet2.ParamByName('q1').Assign(self.Image1.Picture.Bitmap);
self.SQLDataSet2.ParamByName('q2').AsString := 'test1';
self.SQLDataSet2.CommandText := sqlSelect;
self.SQLDataSet2.ExecSQL(true);
end;

結果出現 SQL State: 42000, SQL Error Code: 102 (SQL Server 2008)
img欄位型態是image, 我是使用bmp檔。

謝謝
GrandRURU
站務副站長


發表:240
回覆:1680
積分:1874
註冊:2005-06-21

發送簡訊給我
#6 引用回覆 回覆 發表時間:2009-09-29 14:21:18 IP:203.75.xxx.xxx 未訂閱
試試看這個

[CODE DELPHI]
var
TempSDS : TSQLDataSet;
TempStream : TMemoryStream;
begin
inherited;
TempStream := TMemoryStream.Create;
TempStream.LoadFromFile('C:/house.jpg');
TempSDS := TSQLDataSet.Create(nil);
TempSDS.SQLConnection := dm_NMSMaster.sct_Main;
TempSDS.CommandText :=
'UPDATE INDBILL SET NEW_COMMENTS = :BLOBPARAM WHERE RECORD_NO=2';
TempSDS.ParamByName('BLOBPARAM').SetBlobData (TempStream.Memory,TempStream.Size);
TempSDS.ExecSql;
TempSDS.Free;
TempStream.Free;
end;
[/CODE]
===================引 用 taxchen 文 章===================
我的程式碼如下:

var
sqlSelect : string;
ss : tmemorystream;
begin
SS:=TMemoryStream.Create;
self.Image1.Picture.Graphic.SaveToStream(ss);
sqlSelect := 'insert into img_table (img, description) values(:q1, :q2)';
self.SQLDataSet2.ParamByName('q1').Assign(self.Image1.Picture.Bitmap);
self.SQLDataSet2.ParamByName('q2').AsString := 'test1';
self.SQLDataSet2.CommandText := sqlSelect;
self.SQLDataSet2.ExecSQL(true);
end;

結果出現 SQL State: 42000, SQLError Code: 102 (SQL Server 2008)
img欄位型態是image, 我是使用bmp檔。

謝謝
taxchen
一般會員


發表:15
回覆:19
積分:6
註冊:2002-03-13

發送簡訊給我
#7 引用回覆 回覆 發表時間:2009-10-05 15:41:39 IP:202.132.xxx.xxx 訂閱
請問一下, 
我開了一個form, 拉了TSQLConnection, TSQLDataset, 也加了兩個Params (img, desc)
結果執行時出現:
No Value for Parameter 'img'

把img拿掉, 只insert description, 也是出現
No Value for Parameter 'desc'

Image1已經載入, 也顯示出圖片.
請問這是什麼問題.

謝謝

procedure TForm1.btnInsClick(Sender: TObject);
var
sqlSelect : string;
msTemp : TMemoryStream;

begin
msTemp := TMemoryStream.Create;
try
self.Image1.Picture.Graphic.SaveToStream(msTemp);
// msTemp.LoadFromFile('c:\temp\dmr_48.bmp');
sqlSelect := 'Insert into img_table (img, description) values(:img, :desc)';
self.SQLDataSet1.ParamByName('img').SetBlobData(msTemp.Memory, msTemp.Size);
self.SQLDataSet1.ParamByName('desc').Value := 'Test';
self.SQLDataSet1.CommandText := sqlSelect;
self.SQLDataSet1.ExecSQL;
finally
msTemp.Free;
end;
end;
系統時間:2024-03-29 17:27:21
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!