DELPHI SQL parameter ‘orderNum’ not found
SQLserver2008中有在相关表中定义orderNum,而且ADOQuery中Parameter的相关参数都设置为true,就是报错。之前orderNo:Integ...
SQL server 2008中有在相关表中定义orderNum,而且ADOQuery中Parameter的相关参数都设置为true,就是报错。
之前orderNo:Integer;并且orderNo:=1.
DataModule1.ADOQuery1Custom.close;
DataModule1.ADOQuery1Custom.SQL.Clear;
DataModule1.ADOQuery1Custom.SQL.Add('SELECT * FROM Custom');
DataModule1.ADOQuery1Custom.SQL.Add('WHERE customName='''+UserName+'''and password='''+UserPass+'''');
DataModule1.ADOQuery1Custom.Open;
DataModule1.ADOQuery1Custom.Active;
BackPass:=DataModule1.ADOQuery1Custom.FieldByName('password').Value;
OrderNo:=OrderNo+1;
DataModule1.ADOQuery1Custom.Parameters.ParamByName('orderNum').Value := OrderNo; 展开
之前orderNo:Integer;并且orderNo:=1.
DataModule1.ADOQuery1Custom.close;
DataModule1.ADOQuery1Custom.SQL.Clear;
DataModule1.ADOQuery1Custom.SQL.Add('SELECT * FROM Custom');
DataModule1.ADOQuery1Custom.SQL.Add('WHERE customName='''+UserName+'''and password='''+UserPass+'''');
DataModule1.ADOQuery1Custom.Open;
DataModule1.ADOQuery1Custom.Active;
BackPass:=DataModule1.ADOQuery1Custom.FieldByName('password').Value;
OrderNo:=OrderNo+1;
DataModule1.ADOQuery1Custom.Parameters.ParamByName('orderNum').Value := OrderNo; 展开
3个回答
展开全部
SQL语句错了,你的sql语句部分并没有定义参数,所以你不能使用paramByName来给参数赋值。
如果需要使用参数 你的sql语句需要改为以下形式.
select * from custom where customname=':username' and password=':userpass' and orderNum=:orderNum
只有这样 query对象才会知道 需要给相应的参数进行赋值。
这里 :username :userpass :orderNum 才是参数的变量名称。
如果需要使用参数 你的sql语句需要改为以下形式.
select * from custom where customname=':username' and password=':userpass' and orderNum=:orderNum
只有这样 query对象才会知道 需要给相应的参数进行赋值。
这里 :username :userpass :orderNum 才是参数的变量名称。
展开全部
你的sql语句里没有orderNum的参数,而且你这个sql语句很不规范!容易被注入攻击,就是说人家在你的UserName里加个'这个符号你数据库就有可能被攻陷,正确的做法是全部用parameter
举例:
DataModule1.ADOQuery1Custom.close;
DataModule1.ADOQuery1Custom.SQL.Clear;
DataModule1.ADOQuery1Custom.SQL.Add('SELECT * FROM Custom');
DataModule1.ADOQuery1Custom.SQL.Add('WHERE customName=:UserName and password=:UserPass');//注意这行
DataModule1.ADOQuery1Custom.Parameters.ParamByName('UserName').Value=UserName;
DataModule1.ADOQuery1Custom.Parameters.ParamByName('UserPass').Value=UserPass;
DataModule1.ADOQuery1Custom.Open;
DataModule1.ADOQuery1Custom.Active;
BackPass:=DataModule1.ADOQuery1Custom.FieldByName('password').Value;
OrderNo:=OrderNo+1;
DataModule1.ADOQuery1Custom.Parameters.ParamByName('orderNum').Value := OrderNo;//此行无效,因为需要在open之前进行参数赋值!
举例:
DataModule1.ADOQuery1Custom.close;
DataModule1.ADOQuery1Custom.SQL.Clear;
DataModule1.ADOQuery1Custom.SQL.Add('SELECT * FROM Custom');
DataModule1.ADOQuery1Custom.SQL.Add('WHERE customName=:UserName and password=:UserPass');//注意这行
DataModule1.ADOQuery1Custom.Parameters.ParamByName('UserName').Value=UserName;
DataModule1.ADOQuery1Custom.Parameters.ParamByName('UserPass').Value=UserPass;
DataModule1.ADOQuery1Custom.Open;
DataModule1.ADOQuery1Custom.Active;
BackPass:=DataModule1.ADOQuery1Custom.FieldByName('password').Value;
OrderNo:=OrderNo+1;
DataModule1.ADOQuery1Custom.Parameters.ParamByName('orderNum').Value := OrderNo;//此行无效,因为需要在open之前进行参数赋值!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2012-12-08
展开全部
它的意思是你没有一个名字叫orderNum的参数,你再最后一句的时候看一下Parameters里都有什么
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询