JDBC sql语句中包含不是参数的问号
例如:SELECT'FDSJFDSF?FDSF'+afromtable出现错误:没有为参数号1设置值...
例如:SELECT 'FDSJFDSF?FDSF'+a from table
出现错误:没有为参数号 1 设置值 展开
出现错误:没有为参数号 1 设置值 展开
1个回答
2015-06-15
展开全部
简单的一个例子:登陆.
从登陆框中传过来两个参数.
正常情况下、假设是 aa bb
select * from tbl_user where uname='aa' and upass='bb'
然后有些会sql的人就想到了在参数后面加些其他的东西
比如在bb' or 'a'='a 或者 ;DELETE FROM tbl_user WHERE 1>0之类的
这样SQL语句就变成:
select * from tbl_user where uname='aa' and upass='bb' or 'a' = 'a'
这样的语句是不安全的。
后来就出现PreparedStatement 对象的?占位符,通过给? 设值,可以把传过来的参数当成普通的字符串,包括单引号。这样就避免了一些灾难。
从登陆框中传过来两个参数.
正常情况下、假设是 aa bb
select * from tbl_user where uname='aa' and upass='bb'
然后有些会sql的人就想到了在参数后面加些其他的东西
比如在bb' or 'a'='a 或者 ;DELETE FROM tbl_user WHERE 1>0之类的
这样SQL语句就变成:
select * from tbl_user where uname='aa' and upass='bb' or 'a' = 'a'
这样的语句是不安全的。
后来就出现PreparedStatement 对象的?占位符,通过给? 设值,可以把传过来的参数当成普通的字符串,包括单引号。这样就避免了一些灾难。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询