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

字串轉換

答題得分者是:timhuang
m510011
一般會員


發表:18
回覆:18
積分:7
註冊:2002-05-16

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-08-22 11:47:11 IP:61.60.xxx.xxx 未訂閱
請問各位先進: 當我的程式收到一字串,我如何將之轉成Binary型態,直接寫入Oracle資料庫 因為此字串含有特殊符號如"'",有時寫入資料庫時,會被截斷,造成錯誤, 麻煩大家,如果可以,可寫一小範例給我,謝謝啦!
ha0009
版主


發表:16
回覆:507
積分:639
註冊:2002-03-16

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-08-22 15:17:35 IP:61.30.xxx.xxx 未訂閱
你好: 如果你的資料表內欄位是屬於 BLOB 型態,Delphi 就會使用 TBLOBField 來對應你的資料欄位。BLOB 就是把資料當成 Binary 儲存 > < src="http://sourceprovide.deepen.com.tw/K_Top/bp.gif">
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-08-22 17:50:43 IP:203.95.xxx.xxx 未訂閱
hello, 是不是你是用組字串的方式下 command 存入資料庫的呢?  若是這樣的話, 建議你改用 參數 的方式寫入資料庫. 如:    
procedure TForm1.Button1Click(Sender: TObject);
begin
  Query1.SQL.Text := 'Insert into table (sid, strdata) values (:sid, :strdata)';
  Query1.ParamByName('sid').AsInteger := 20;
  Query1.ParamByName('strdata').AsString := 'xxxxxx''xxxxx';
  Query1.ExecSQL;
end;
m510011
一般會員


發表:18
回覆:18
積分:7
註冊:2002-05-16

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-08-25 17:56:33 IP:203.73.xxx.xxx 未訂閱
謝謝兩位的幫忙,資料庫欄位屬性為定長文字,在字串寫入前曾經用掃描字串, 如有"'"則再在前加上"'"顯然可以,不過我希望盡量不動到字串內容,想是否可以先轉成Binary方式,直接寫入Oracle欄位上,請各位幫忙啦
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-08-25 18:22:21 IP:203.95.xxx.xxx 未訂閱
不, 你誤會了. 我之所以在字串中使用 '' 代表 ' 只是在 delphi 中, ' 代表著字串的開頭和結尾, 所以若是要讓 compiler 看懂在字串中的 ', 就必須使用 '' 才行, 但若是你的程式中已是變數, 也就是接回來的字串, 就不需要這麼處理了. 假設 a 字串中的內容為 timhuang's name 則你就直接寫為: Query1.ParamByName('strdata').AsString := a; 這樣就可以了, 不需要針對 ' 來進行處理的!
m510011
一般會員


發表:18
回覆:18
積分:7
註冊:2002-05-16

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-08-25 19:29:27 IP:203.73.xxx.xxx 未訂閱
謝謝您的指導,但是以字串方式接到資料,內容含'字元,在寫入Oracle時有時候會後半段不見了(大約是一半都發生),我是使用SQL Explorer去看Oracle的欄位內容,不知道是何種問題發生,所產生的
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-08-25 19:40:28 IP:203.95.xxx.xxx 未訂閱
請問你是用參數式的方式寫入資料庫(如上), 或是組字串的方式寫入的呢? 之前弟有做過類似的操作是沒有問題的啊. 
m510011
一般會員


發表:18
回覆:18
積分:7
註冊:2002-05-16

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-08-26 09:32:35 IP:203.73.xxx.xxx 未訂閱
跟您的方式相同 Query1.ParamByName('strdata').AsString := a; 其時我想也不應該如此,但實際上去看欄位內容時後面是空白,不知是何原因
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-08-26 09:59:59 IP:203.95.xxx.xxx 未訂閱
那如果是再用程式 select 出來該筆資料的話呢? 是不是正常的? 會不會只是在 sql explorer 中看不正常, 但實際上是正常的?
m510011
一般會員


發表:18
回覆:18
積分:7
註冊:2002-05-16

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-10-02 10:56:21 IP:61.60.xxx.xxx 未訂閱
讀出後和原字串比對不合,長度也不對,不知是否有解決方案,謝謝
系統時間:2024-06-08 17:22:04
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!