首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

mybatis SQLSERVER '@P1' 附近有语法异常

2012-07-19 
mybatis SQLSERVER@P1 附近有语法错误数据库用SQLSERVER2000,写分页sql,使用mybatis动态传入参数,报如下

mybatis SQLSERVER '@P1' 附近有语法错误
数据库用SQLSERVER2000,写分页sql,使用mybatis动态传入参数,报如下错误
bad SQL grammar []; nested exception is com.microsoft.sqlserver.jdbc.SQLServerException: 第 1 行: '@P1' 附近有语法错误。
对SQL出问题的地方做了简化,实际要负责很多,简化后问题SQL语句如下:
SELECT TOP #{num} FROM employee
通过google找到解决办法,只要改成
SELECT TOP ${num} FROM employee 

总结原因如下:
#{var}传入参数会被装饰成 "var"可以防止sql注入问题
比如num=10,上面sql语句就会被解释成SELECT TOP "10" FROM employee 这样就会报错
${var}传入参数会直接显示 会有发生sql注入问题
同样num=10,上面sql语句就会被解释成SELECT TOP 10 FROM employee 这样就没错 
使用#{var},尽量少用${var}          

热点排行