請問,一個SQL命令串問題 |
尚未結案
|
mahler
一般會員 發表:3 回覆:7 積分:2 註冊:2005-03-29 發送簡訊給我 |
|
mahler
一般會員 發表:3 回覆:7 積分:2 註冊:2005-03-29 發送簡訊給我 |
|
rogan321
高階會員 發表:21 回覆:307 積分:200 註冊:2003-05-15 發送簡訊給我 |
|
mahler
一般會員 發表:3 回覆:7 積分:2 註冊:2005-03-29 發送簡訊給我 |
|
rogan321
高階會員 發表:21 回覆:307 積分:200 註冊:2003-05-15 發送簡訊給我 |
因為你將
ADOQuery1->SQL->Add("Select * from HappyUsers where UserRemark='%"+QuotedStr("'")+"00'");
諸如此字串丟給sql~是由sql在判斷該句的意思~而'是sql他內定的"關鍵字符"
也就是他看到這個字~他就必須依照他內定的處理動作執行~也就不知道該進行我
們要的動作~加上QuotedStr你可以把他看成是在告訴sql這個字不是你的關鍵字
無須依內定方式處理~~~上句SQL是找UserRemark=任意文字加上'00
的意思
|
mahler
一般會員 發表:3 回覆:7 積分:2 註冊:2005-03-29 發送簡訊給我 |
謝謝ROGAN先進的熱心答復,把我的實驗做一個彙報: CODE: AnsiString SqlTxt,dan;
ADOQuery1->Prepared = true; ADOQuery1->Close();
ADOQuery1->SQL->Clear(); SqlTxt = "INSERT INTTO TABLE (A) Values (\";
SqlTxt = dan;
SqlTxt = \");"; ADOQuery1->SQL->Add(SqlTxt);
ADOQuery1->ExecSQL(); 報錯的情況有以下幾種:
一、dan = “XXXX’XXXX” 出錯
二、dan = “’XXXX’’XXXX’” 出錯
三、dan = “’%XXXX’’XXXX’” 出錯
四、dan = “’%XXXX’’XXXX%’” 出錯
五、dan = “XXXX’XXXX”
dan = QuotedStr(dan) 出錯
六、dan = “XXXX’XXXX”
並在SQL->Add(SqlTxt);前加入一行SqlTxt = QuotedStr(SqlTxt); 出錯 不報錯的情況有以下幾種:
一、dan = “’XXXX’XXXX’” 存入的是’XXXX’XXXX’
二、dan = “XXXX’’XXXX” 存入的是XXXX’’XXXX
二、dan = “’%XXXX’XXXX’” 存入的是’%XXXX’XXXX’
三、dan = “’%XXXX’XXXX%’” 存入的是’%XXXX’XXXX%’ 總結:
一、%不起任何作用
二、只用單引號包起或者用兩個單引號REPLACE串內的單引號,可以運行
三、用QuotedStr必錯
四、在運行正常的情況下,對原始串的所有改變都被寫入DB
五、似乎沒有什麽辦法既不報錯,又只寫入原始串
|
mahler
一般會員 發表:3 回覆:7 積分:2 註冊:2005-03-29 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |