利用ADOQuery查询Access的疑惑? |
答題得分者是:Chance36
|
bigdogchina
版主 發表:238 回覆:523 積分:312 註冊:2003-04-28 發送簡訊給我 |
大大们好,能看看下面这个问题,指点一下我,好吗?
我想利用ADOQuery来检查用户的合法性,在认真看了
http://delphi.ktop.com.tw/topic.php?topic_id=46238
http://delphi.ktop.com.tw/topic.php?topic_id=43414
后,试着自己来做,code如下:
procedure TForm1.Button1Click(Sender: TObject); var sUser,sPWD,sSQL: String; begin sUser := Edit1.Text; sPWD := Edit2.Text; sSQL := 'select * from 员工管理 where 员工编号 = ' + sUser + ' and 密码 = ' + sPWD; ADOQuery1.Close; ADOQuery1.SQL.Clear; ADOQuery1.SQL.Add(sSQL); ADOQuery1.Active := True; if ADOQuery1.RecordCount = 0 then begin ShowMessage('用户名或密码有错!请检查一下'); Exit; end; ADOQuery1.Close; end;我用的是Access2000,在按下F9时没有错,但一执行时(Edit1和Edit2不为空,输入了数据的),就出错了 哇,在Access里我设置的员工编号和密码数据类型都是文本类型啊,怎么又会出现上面的错误呢?真诚期待您的指点,谢谢先 < class="code"> =============== 人生在勤,不索何获? ===============
------
人生在勤,不索何获? |
Chance36
版主 發表:31 回覆:1033 積分:792 註冊:2002-12-31 發送簡訊給我 |
|
bigdogchina
版主 發表:238 回覆:523 積分:312 註冊:2003-04-28 發送簡訊給我 |
|
Chance36
版主 發表:31 回覆:1033 積分:792 註冊:2002-12-31 發送簡訊給我 |
bigdogchina 你好 如果不加兩個引號會如何?假設sUser:='aaa' sPWD:='bbb',經過列字串結合後的結果會是什麼? sSQL := 'select * from 员工管理 where 员工编号 = ' + sUser + ' and 密码 = ' + sPWD;
==> sSQL := 'select * from 员工管理 where 员工编号 = aaa and 密码 = bbb ' ;
應該為>sSQL := 'select * from 员工管理 where 员工编号 = 'aaa' and 密码 = 'bbb' ' ;
但字串是以[']單引號括住的,而字串中必須有[']時,那麼須在字串內容的[']前再補個[']形成['']現象,這就是所謂的跳脫字元,好像在C 裏面使用'\'的作用是一樣的,所以在引號內的兩個引號你要把它當成一個引號看待。最後就變成下面的結果了
sSQL := 'select * from 员工管理 where 员工编号 = ''' sUser ''' and 密码 = ''' sPWD '''';
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |