兩個資料表間的圖片型態之欄位要如何複製? |
尚未結案
|
ez3cshop
一般會員 ![]() ![]() 發表:13 回覆:6 積分:3 註冊:2005-01-24 發送簡訊給我 |
請教大家: 假設我在SQL Server有兩個資料表 A, B. 這兩個資料表的欄位結構都是一樣的, 但其中有一個屬於image的欄位PCT, 現在, 我必須把資料表A的資料複製到資料表B, 一些字串與數值的資料是沒有問題, 但碰到image型態的欄位就會有Bug, 例如: 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;
Query.ParamByName('PCT').Value = A.FieldByName('PCT').Value; //===>會出錯
Query.ParamByName('PRICE').Value = A.FieldByName('PRICE').Value;
Query.ExecSQL; 我該怎麼做呢?
|
Mickey
版主 ![]() ![]() ![]() ![]() ![]() 發表:77 回覆:1882 積分:1390 註冊:2002-12-11 發送簡訊給我 |
ez3cshop 你好: 看了你的需求, 為何要將 A.PCT 取到前端, 再送回 B.PCT 呢 ? 直接 Insert Into A (ID, NAM, PCT, PRICE) select ID, NAM, PCT, PRICE from B where ... 這樣應比較好些 如果要從前端塞值進入 Image 欄位, 建議先送入其他欄位(尤其 Key 欄位), 然後單獨處理 Image (BLOB) 欄位,
必要(BLOB SIZE 很大)時, 還需用 Transaction 包裝整個資料交易. 另外, 建議你查查 "TBLOBField" 的相關說明文件.
|
timhuang
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:78 回覆:1815 積分:1608 註冊:2002-07-15 發送簡訊給我 |
Hi, 請先參考 mickey 兄的建議(這樣不僅效能較佳, 而且也不需要將 binary 的資料送到 client來), 若仍不能滿足你的需求, 一定要將 binary 的資料帶出來後再寫回去, 這種欄位一般是用 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;但仍提醒你, 除了效能上會較差外, 還得注意到你使用 BDE 這組資料存取時, 對於 Blob 資料的預設大小為 32k, 若你該欄位資料會大於 32k時, 請在 TDatabase 元件上的 BLOB SIZE 設為更大, 如 1024 就有 1mb 囉, 請你特別注意!! |
ez3cshop
一般會員 ![]() ![]() 發表:13 回覆:6 積分:3 註冊:2005-01-24 發送簡訊給我 |
引言: ez3cshop 你好: 看了你的需求, 為何要將 A.PCT 取到前端, 再送回 B.PCT 呢 ? 直接 Insert Into A (ID, NAM, PCT, PRICE) select ID, NAM, PCT, PRICE from B where ... 這樣應比較好些 如果要從前端塞值進入 Image 欄位, 建議先送入其他欄位(尤其 Key 欄位), 然後單獨處理 Image (BLOB) 欄位, 必要(BLOB SIZE 很大)時, 還需用 Transaction 包裝整個資料交易. 另外, 建議你查查 "TBLOBField" 的相關說明文件. |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |