一個無法解釋的字符串問題(100分)

S

stuwe

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure FindData(ID: string);
begin
with ADOQuery1 do
begin
Close;
SQL.Clear;
SQL.Add('select * from CPB where ID='+QuotedStr(ID));
Open;
end;
end;

大家試試這個過程,調用的時候用FindData('"A:B"'),看是否出錯,如果出錯應該如何解決這樣的錯誤,參數裡面兩個點是雙引號,A和B中間是一個冒號
 
Y

ycxy

Unregistered / Unconfirmed
GUEST, unregistred user!
SQL.Add('select * from CPB where ID='''+QuotedStr(ID)+'''');
 
M

maozhuxi

Unregistered / Unconfirmed
GUEST, unregistred user!
你干脆就问
select * from CPB where ID='+''"A:B"''
怎么解释。
显然有错。
 
S

stuwe

Unregistered / Unconfirmed
GUEST, unregistred user!
to:ycxy
>>SQL.Add('select * from CPB where ID='''+QuotedStr(ID)+'''')

改為這樣行嗎?能查到正確的結果嗎?
剛才試了,按你這種方法連普通的字符串都不能查了

to:maozhuxi
老大有沒有試過?當用我上面去查詢時
如果字符串不像我上面列出來的那個那樣特殊是肯定不會有錯的
 
M

maozhuxi

Unregistered / Unconfirmed
GUEST, unregistred user!
你的意图是什么
为什么要取个很特殊的字符?
 
S

stuwe

Unregistered / Unconfirmed
GUEST, unregistred user!
to:maozhuxi
沒什麼特殊的意圖,隻是當程序運行到查這樣的數據時出錯,我想知道為什麼出錯,如何去解決
 
M

maozhuxi

Unregistered / Unconfirmed
GUEST, unregistred user!
一开始就觉得你的问题有点怪
你的设计可能存在问题吧:
ID是没有奇怪的字符的。
你的情况一般是出现在登陆窗口的密码框中
但是密码登陆框一般不用select ...where,而是字符比较strcmp。
 
A

alexhans

Unregistered / Unconfirmed
GUEST, unregistred user!
SQL.Add('select * from CPB where ID='+QuotedStr(ID));
你这句话用参数代入最后就是如下样子
SQL.Add('select * from CPB where ID="A:B");
如果你A:B是表中的列名,就不会出错,如果是值应该写成'A:B',则应该如下调用
FindData(quotedStr('A:B'))
 
M

maozhuxi

Unregistered / Unconfirmed
GUEST, unregistred user!
反正我觉得where后面输入的问题是无法解决的!
你根本就不知道用户将输入什么奇怪的字符。
 
0

011101

Unregistered / Unconfirmed
GUEST, unregistred user!
忘了說;id是字符型
 
M

maozhuxi

Unregistered / Unconfirmed
GUEST, unregistred user!
如果真的想彻底解决
....................
 
S

stuwe

Unregistered / Unconfirmed
GUEST, unregistred user!
to:maozhuxi
不管出現在什麼地方,首先我的函數原型在那裡
調用的時候是用FindData('"A:B"');我要值的參數是:"A:B"
即兩連是雙引號,而不是其它的
我不是要比較什麼,我隻要查詢數據,看看ID值在數據裡面是否存在,這麼簡單

to:alexhans
你還沒看清楚,我要傳的參數是兩邊有兩個雙引號括起來的,不是兩個單引
 
M

maozhuxi

Unregistered / Unconfirmed
GUEST, unregistred user!
用#39可以解决?
011101
你试过没有
我很怀疑哈
 
S

stuwe

Unregistered / Unconfirmed
GUEST, unregistred user!
用#39在我這裡也同樣出錯

我覺得跟數據庫應該沒關,我試過Paradox,Access,都一樣的出錯
 
J

JamesBond_L

Unregistered / Unconfirmed
GUEST, unregistred user!
不知道FindData('A::b')行不行呢。
 
S

stuwe

Unregistered / Unconfirmed
GUEST, unregistred user!
to:JamesBond_L
這樣調用肯定行
 
M

maozhuxi

Unregistered / Unconfirmed
GUEST, unregistred user!
还有你的引号成对还好办点
要是输入的引号不成对又有问题了
 
S

stuwe

Unregistered / Unconfirmed
GUEST, unregistred user!
to:maozhuxi
FindData('A:B"');這樣肯定沒有問題,不信你可以試試。(B後面兩點是雙引)
 
M

maozhuxi

Unregistered / Unconfirmed
GUEST, unregistred user!
讨论这个问题真没有意思
怎么会出现这样的问题
楼主先说明你的ID是什么?
怎么会有那些乱七八糟的字符
 
顶部