delphi中运行到sql语句报错

manxx123 2018-02-24 01:50:02
Query1.SQL.Clear;
//采用了md5加密
Query1.SQL.Add('select * from CW_USER where USERNAME= ''' + dlyhm + ''' and CW_USER.PASSWORD= ''' + md5.MD5Print(md5.MD5String(RzEdit1.Text)) + '''');
Query1.Open;
请问这个代码有问题么,运行到这里会报错
---------------------------
Debugger Exception Notification
---------------------------
Project raised exception class EDBEngineError with message 'Invalid use of keyword.
Token: PASSWORD=
Line Number: 1'. Process stopped. Use Step or Run to continue.
---------------------------
OK Help
---------------------------
...全文
949 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_39412731 2018-02-26
  • 打赏
  • 举报
回复
设置一个断点,获取sql语句,在数据库运行sql。
manxx123 2018-02-26
  • 打赏
  • 举报
回复
统一回复,是关键字的问题,开始登录界面相同的语句可以查询,因为不勾选catchedupdate,我刚才是密码修改界面,要修改密码,如果关键字为password则会冲突
shw014 2018-02-26
  • 打赏
  • 举报
回复
BDE 试一下 PASSWORD 加双引号
 Query1.SQL.Add('select * from CW_USER where USERNAME= ''' + dlyhm + ''' and CW_USER."PASSWORD"= ''' + md5.MD5Print(md5.MD5String(RzEdit1.Text)) + ''''); 
manxx123 2018-02-26
  • 打赏
  • 举报
回复
引用 8 楼 doloopcn 的回复:
Query1.SQL.Add('select * from CW_USER where USERNAME= ' + QuotedStr(dlyhm) + 'and CW_USER.PASSWORD=' + QuotedStr(md5.MD5Print(md5.MD5String(RzEdit1.Text))) );
提示报错Invalid use of keyword. Token: PASSWORD='d41d8cd98f00b204e9800998ecf8427e' Line Number: 1
manxx123 2018-02-26
  • 打赏
  • 举报
回复
引用 6 楼 lyhoo163 的回复:

Query1.SQL.Add('select * from CW_USER where USERNAME= '+#39+dlyhm +#39' and CW_USER.PASSWORD='#39+md5.MD5Print(md5.MD5String(RzEdit1.Text))+#39);
试试这个。
提示报错Invalid use of keyword. Token: PASSWORD='d41d8cd98f00b204e9800998ecf8427e' Line Number: 1'
manxx123 2018-02-26
  • 打赏
  • 举报
回复
引用 2 楼 kenlewis 的回复:
我觉得问题出在Password上了,这个是你所使用的数据库的关键字,所以应该用方括号[]括起来。
Query1.SQL.Add('select * from CW_USER where USERNAME= ''' + dlyhm + ''' and CW_USER.[PASSWORD]= ''' + md5.MD5Print(md5.MD5String(RzEdit1.Text)) + '''');
提示报错Invalid use of keyword. Token: [PASSWORD]= Line Number: 1'
doloopcn 2018-02-26
  • 打赏
  • 举报
回复
Query1.SQL.Add('select * from CW_USER where USERNAME= ' + QuotedStr(dlyhm) + 'and CW_USER.PASSWORD=' + QuotedStr(md5.MD5Print(md5.MD5String(RzEdit1.Text))) );
leeky 2018-02-25
  • 打赏
  • 举报
回复
'Invalid use of keyword IDE都给你提供了原因:非法使用关键字!
lyhoo163 2018-02-24
  • 打赏
  • 举报
回复

Query1.SQL.Add('select * from CW_USER where USERNAME= '+#39+dlyhm +#39' and CW_USER.PASSWORD='#39+md5.MD5Print(md5.MD5String(RzEdit1.Text))+#39);
试试这个。
  • 打赏
  • 举报
回复
最好使用参数化查询,不要自己构造SQL字符串,那样不但容易出错还不好修改。 Query1.Close; Query1.SQL.Clear; Query1.SQL.Add('select * from CW_USER where USERNAME=:username and CW_USER.PASSWORD=:password;'); Query1.ParamByName('username').AsString := 'xxx'; Query1.ParamByName('password').AsString := 'xxx'; Query1.Prepare; Query1.Open;
kenlewis 2018-02-24
  • 打赏
  • 举报
回复
另外,建议给数据库表定义字段时,避开这些关键字。
kenlewis 2018-02-24
  • 打赏
  • 举报
回复
我觉得问题出在Password上了,这个是你所使用的数据库的关键字,所以应该用方括号[]括起来。
Query1.SQL.Add('select * from CW_USER where USERNAME= ''' + dlyhm + ''' and CW_USER.[PASSWORD]= ''' + md5.MD5Print(md5.MD5String(RzEdit1.Text)) + '''');
manxx123 2018-02-24
  • 打赏
  • 举报
回复
引用 1 楼 hongss 的回复:
试试这个
Query1.SQL.Add('select * from CW_USER where USERNAME= "' + dlyhm + '" and CW_USER.PASSWORD= "' + md5.MD5Print(md5.MD5String(RzEdit1.Text)) + '"');
注意单引号和双引号的区别
试了,还是报错
hongss 2018-02-24
  • 打赏
  • 举报
回复
试试这个
Query1.SQL.Add('select * from CW_USER where USERNAME= "' + dlyhm + '" and CW_USER.PASSWORD= "' + md5.MD5Print(md5.MD5String(RzEdit1.Text)) + '"');
注意单引号和双引号的区别

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧