MSSQL insert record 但ㄧ直回應少ㄧ個字元' |
尚未結案
|
yuan1688
一般會員 ![]() ![]() 發表:11 回覆:11 積分:4 註冊:2005-01-12 發送簡訊給我 |
我想insertㄧ筆record進資料庫,但都一直被回應少了一個'字元,我找不出有什麼方法,把sqlstr直接用SQL analyzer去執行是ok的,請各位給ㄧ個方向 ADOQuery.Close ;
ADOQuery.SQL.Clear ;
ADOQuery.ConnectionString := g_connectstring;
sqlstr :='insert into errorlog values (''' FormatDateTime('yyyy-mm-dd hh:mm:ss',now) ''',''' s ''' ) ';
ADOQuery.SQL.Text := '';
ADOQuery.SQL.Text := sqlstr;
ADOQuery.ExecSQL ;
|
Mickey
版主 ![]() ![]() ![]() ![]() ![]() 發表:77 回覆:1882 積分:1390 註冊:2002-12-11 發送簡訊給我 |
|
timhuang
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:78 回覆:1815 積分:1608 註冊:2002-07-15 發送簡訊給我 |
Hi, 看起 sqlstr 這行沒有什麼問題, 但是 s 的值很有可能內含了 ' 這個符號, 造成 sqlstr 組合完成後有問題, 建議你在 ExecSQL 前, 先將 sqlstr Show 出來或存成檔案, 或設中斷點 debug, 或是利用 sql profiler 也可以, 就是要確認組合的 sqlstr 是正確的. 若是 s 中有 ' 這個符號, 可以利用 StringReplace 將一個 ' 改為兩個 '' 即可, 如: s := StringReplace(s, '''', '''''', [rfReplaceAll]);
sqlstr :='insert into errorlog values (''' FormatDateTime('yyyy-mm-dd hh:mm:ss',now) ''',''' s ''' ) '; 或利用 QuotedStr 函數也很方便, 如: sqlstr :='insert into errorlog values (''' FormatDateTime('yyyy-mm-dd hh:mm:ss',now) ''',' QuotedStr(s) ' ) '; 因為 QuotedStr 會在前後加上 ' 以外, 也會將 s 的內容有 ' 的改為 ''.
另外若是內容會有中文的話, 就改用 AnsiQuotedStr 也是一樣的功能, 只是 AnsiQuotedStr 是有 support multi-byte character sets (MBCS)!
|
yuan1688
一般會員 ![]() ![]() 發表:11 回覆:11 積分:4 註冊:2005-01-12 發送簡訊給我 |
我的sqlstr的內容經過write to file的結果是..
insert into na_errorlog values ('2005-03-20 22:05:10','<9>kd: 041106105005 SRC=172.16.10.1 DST=59.104.6.252 PROTO=UDP SPT=3279 DPT=5145 14 LEN=193 WAN=1 DIR=out (Mar 20 22:04:31 2005) 結尾都少了') , 旦在watch 裡頭的值是對的...奇怪
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |