这个sql语句错在哪里?(50分)

  • 主题发起人 主题发起人 longpoet
  • 开始时间 开始时间
L

longpoet

Unregistered / Unconfirmed
GUEST, unregistred user!
user:=Trim(Edit1.Text);
pass:=Trim(Edit2.Text);
sqlstring:='select * from password where (username=:"'+user+'") and (password=:"'+pass+'")';

总是出错:(
 
不要括号的。
 
不是括号的问题,编译没有错的。
 
出了什么错? 是不是说无效列名?
你应该把双引号"替换成单引号
sqlstring:='select * from password where (username=:'''+user+''') and (password=:'''+pass+''')';
 
对呀,就是说无效列名!!!
三个单引号???
 
笨锛,3个单引号就相当于一个啊
 
不对啊,应该是:
sqlstring:='select * from password where (username=:''''+user+'''')
and (password=:''''+pass+'''')';
delphi里是四个单引号是一个单引号,我刚用过!
 
楼上第一说对了,不能用“:”号。
第二就不对了,ACESS也是单引号,刚用过,哈哈!
 
第一不能用“:”号
第二如果是SQL Server,如果用BDE配置则可以用双引号,用ODBC则只能单引号
 
第一 ":"在Delphi中的SQL语句有特殊意义,不能乱用,如果SQL中要用":"
比如时间比较,必须用"::" 例如: "Time>10:20:20"要写成"Time>10::20::20"
第二 如果是Acess数据库,可用双引号,如果是SQL Server
就必须用单引号
 
sqlstring:='select * from password where (username=:''''+user+'''')
and (password=:''''+pass+'''')';
这也能编译通过?见鬼了!!
两个''表示一个',什么3个4个表示一个单引号!仔细研究研究把
 
声明:用ADO连SQL SERVER 2000[:D]
我越来越胡涂了,到底是一个两个三个四个单引号[?]
 
有两点要说明:
1.SQL语句中表示字符串用单引号,Delphi字符串中
使用两个连续的单引号来表示一个单引号;
2.SQL语句中的冒号用在带参数的SQL语句中,简单的比较不用冒号。
这只是基本的语法问题,书上应该有的!
 
user:=Trim(Edit1.Text);
pass:=Trim(Edit2.Text);
query1.sql.text:='select * from password where (username="'+user+'") and (password="'+pass+'"'
//去掉冒号就行了,user,pass是变量,不是参数吧
 
可是明明是书上的例子,就是有错啊。难道是ado的问题?
 
select * from password where username="'+trim(edit1.Text)+'" and password="'+trim(edit2.Text)+'"

select * from password where username=:d0 and password=:d1
Parameters.ParamByName('d0').Value:=edit1.text; //d0是SQL里的参数
Parameters.ParamByName('d1').Value:=edit2.text; //d0是SQL里的参数

试试吧,我对SQL不是很精.
 
不如不用什么引号,把人搞糊涂了,就像小小k那样使用参数肯定持的。
 
绝对正确:
user:=Trim(Edit1.Text);
pass:=Trim(Edit2.Text);
sqlstring:='select * from password where (username='+chr(39)+user+chr(39)+' and (password='+chr(39)+pass+chr(39)+')';

 
支持和建议ParamByName [:)]
 
后退
顶部