com.microsoft.sqlserver.jdbc.SQLServerException: '@P0' 附近有语法错误。
来源:互联网 发布:pyqt4 linux安装 编辑:程序博客网 时间:2024/05/16 23:33
今天遇到一个关于分页时写sql语句的小问题,原先我写sql语句如下
String sql = "SELECT TOP ? * " +" FROM NOTICE_T N,USER_T U " +" WHERE N.userId=U.userId " +" AND N.noticeState=? " +" AND N.noticeId NOT IN " +" ( SELECT TOP ? N.noticeId " +" FROM NOTICE_T N,USER_T U " +" WHERE N.userId=U.userId " +" ) " +" ORDER BY N.noticePublishTime DESC ";
然后使用如下个参数绑定值:
ps.setInt(1, 2);ps.setInt(2, 2);ps.setInt(3, upRowCount);
报错如下:com.microsoft.sqlserver.jdbc.SQLServerException: ‘@P0’ 附近有语法错误。
错误解释如下:
在Java中对数据库查询时经常使用“Select Top ? * From 表名 Where 列名 = ?”的SQL语句,此时的问号是PreparedStatement预编译对象的参数占位符,需要使用setXX()系列方法对其赋值后再执行。但是,Top后面是不允许使用问号占位符的,此处的错误就是由此引起的。
解决方法一:
语句修改为:select top ${top} * from tb
解决方法二
直接改为拼接,如下:
String sql = "SELECT TOP "+10+" * \n" +" FROM NOTICE_T N,USER_T U \n" +" WHERE N.userId=U.userId \n" +" AND N.noticeState=? \n" +" AND N.noticeId NOT IN \n" +" ( SELECT TOP "+upRowCount+" N.noticeId \n" +" FROM NOTICE_T N,USER_T U \n" +" WHERE N.userId=U.userId \n" +" ) \n" +" ORDER BY N.noticePublishTime DESC \n";
ps.setInt(1, 2);//设置可以绑定的 N.noticeState=?
0 0
- JSP com.microsoft.sqlserver.jdbc.SQLServerException: '@P0' 附近有语法错误。
- com.microsoft.sqlserver.jdbc.SQLServerException: '@P0' 附近有语法错误。
- ibatis Cause: com.microsoft.sqlserver.jdbc.SQLServerException: '@P0' 附近有语法错误
- ibatis Cause: com.microsoft.sqlserver.jdbc.SQLServerException: '@P0' 附近有语法错误
- Cause: com.microsoft.sqlserver.jdbc.SQLServerException: 关键字 'user' 附近有语法错误
- sqlserver @P0附近有语法错误
- sqlserver mybatis分页, '@P0' 附近有语法错误
- '@P0' 附近有语法错误
- '@P0'附近有语法错误
- '@P0' 附近有语法错误
- com.microsoft.sqlserver.jdbc.SQLServerException
- 【sql server】解决 com.microsoft.sqlserver.jdbc.SQLServerException: Incorrect syntax near '@P0'.
- mybatis sqlserver 分页查询报错:'@P0' 附近有语法错误
- mybatis使用sqlserver分页报'@P0' 附近有语法错误。
- com.microsoft.sqlserver.jdbc.SQLServerException: socket closed
- java.sql.SQLException: '@P0' 附近有语法错误
- myibatis中出现“@P0' 附近有语法错误。”
- mybatis 动态SQL '@P0' 附近有语法错误
- 消灭Bug!十款免费移动应用测试框架推荐
- 文件版本和产品版本的区别
- 泛学web测试
- 【Topcoder SRM 641】BitToggler 期望 高斯消元
- listView下拉时,顶部会有一条渐变的线
- com.microsoft.sqlserver.jdbc.SQLServerException: '@P0' 附近有语法错误。
- php获取当前日期时间 & php日期转时间戳,指定日期转换成时间戳
- UINvigation,导航条
- UITextFiled的输入框改成一条下划线
- Axure VS Mockplus VS Balsamiq - 原型图设计工具对比
- Missing Ranges
- iOS二级tabView,左右两个tableView,点左边,刷新右边
- hdoj 3974 Assign the task 【DFS + 线段树区间修改】
- 彻底搞明白Calendar中的一些易混淆的属性和方法