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

如何將sql的image型態欄位備份至txt並回存?

尚未結案
chris681016
中階會員


發表:69
回覆:122
積分:98
註冊:2006-10-12

發送簡訊給我
#1 引用回覆 回覆 發表時間:2010-08-12 10:29:20 IP:211.75.xxx.xxx 訂閱
blob field 內的資料(image)怎樣轉為string field?
然後在string還原成sql的image型態?
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2010-08-12 12:18:27 IP:210.242.xxx.xxx 未訂閱
試試:
1.TStringField(Table1.FieldByName('Image'))
2.
var
blobF : TBlobField;
ss : TStringStream;
begin
ads.Insert;
blobF := Table1.FieldByName('Image') as TBlobField;
ss := Table1.CreateBlobStream(blobF, bmWrite) ;
try
ss.WriteString('test string');
finally
ss.Free;
end;
Table1.Post;
end;
chris681016
中階會員


發表:69
回覆:122
積分:98
註冊:2006-10-12

發送簡訊給我
#3 引用回覆 回覆 發表時間:2010-08-12 15:58:54 IP:211.75.xxx.xxx 訂閱
Memo1.Text:=TStringField(ADOQuery1.FieldByName('prod_photo')).asstring;
會變?

MS:= TMemoryStream.Create;
TBlobField(ADOQuery1.FieldByName('prod_photo')).SaveToStream(MS);
MS.Position:=0;
a:=a PointToHex(MS.Memory,MS.size);
Memo1.Text:=a;

雖然變成了16進制,但存進去後在秀就錯誤了~~

ADOQuery2.Append;
ADOQuery2.FieldByName('s_no').value:='1';
ADOQuery2.FieldByName('i_mage').value:=a;
ADOQuery2.post;
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#4 引用回覆 回覆 發表時間:2010-08-13 14:12:57 IP:210.242.xxx.xxx 未訂閱
試試這個:

TMemo.Lines.LoadFromStream 與 TMemo.Lines.SaveToStream


===================引 用 chris681016 文 章===================
Memo1.Text:=TStringField(ADOQuery1.FieldByName('prod_photo')).asstring;
會變?

MS:= TMemoryStream.Create;
? TBlobField(ADOQuery1.FieldByName('prod_photo')).SaveToStream(MS);
? MS.Position:=0;
? a:=a PointToHex(MS.Memory,MS.size);
? Memo1.Text:=a;

雖然變成了16進制,但存進去後在秀就錯誤了~~

?? ADOQuery2.Append;
?? ADOQuery2.FieldByName('s_no').value:='1';
?? ADOQuery2.FieldByName('i_mage').value:=a;
?? ADOQuery2.post;
chris681016
中階會員


發表:69
回覆:122
積分:98
註冊:2006-10-12

發送簡訊給我
#5 引用回覆 回覆 發表時間:2010-08-13 16:37:22 IP:211.75.xxx.xxx 訂閱
先感謝大大的回覆^^
procedure TForm1.Button2Click(Sender: TObject);
var
bit:TJPEGImage;
begin
MS:= TMemoryStream.Create;
TBlobField(ADOQuery1.FieldByName('prod_photo')).SaveToStream(MS);
MS.Position:=0;
bit := TJPEGImage.Create;
bit.LoadFromStream(ms);
Image1.Picture.Assign(bit);
//一樣是「 ?」
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#6 引用回覆 回覆 發表時間:2010-08-13 17:07:47 IP:210.242.xxx.xxx 未訂閱
依您的例子, blob 型態欄位放的是 jpg 圖片的資料
而您是要將 jpg 圖片的資料顯示在 TMemo 中?
chris681016
中階會員


發表:69
回覆:122
積分:98
註冊:2006-10-12

發送簡訊給我
#7 引用回覆 回覆 發表時間:2010-08-13 17:15:15 IP:211.75.xxx.xxx 訂閱
我要放到.TXT檔~~然後在從TXT回存到資料庫。
就是資料備份而以,還是沒人在存圖片的呵.................
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#8 引用回覆 回覆 發表時間:2010-08-13 17:43:05 IP:210.242.xxx.xxx 未訂閱
從 SQL 指令下手. 參考:

http://www.experts-exchange.com/Microsoft/Development/MS-SQL-Server/SQL-Server-2005/Q_22439913.html

Assisted Solution
If it is truly text repesentation you should be able to use the TSQL Readtext command

Accepted Solution
If the Text is small (less than 8000 characters) consider doing something like this:

Select CAST(CAST(YourColumnname as varbinary(8000)) as varchar(8000))

You can determine the length by doing DATALENGTH(YourColumnName)

If it is more than 8000, you are going to have to get more creative.
編輯記錄
hagar 重新編輯於 2010-08-17 09:03:51, 註解 無‧
chris681016
中階會員


發表:69
回覆:122
積分:98
註冊:2006-10-12

發送簡訊給我
#9 引用回覆 回覆 發表時間:2010-08-16 15:29:27 IP:211.75.xxx.xxx 訂閱
那個網站是要付費的嗎?點進去不能看咧^^
系統時間:2024-04-20 17:29:43
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!