这个是程序片段
con = getConnection(); // 获得数据库连接
con.setAutoCommit(false);// 开始一个数据库事务
String sql = "SELECT TOP 15 * FROM zlb_lgz_hxcf WHERE ID NOT IN (SELECT TOP ?*? ID FROM zlb_lgz_hxcf)";
stmt = con.prepareStatement(sql);
stmt.setInt(1, (pageInfoVO.getPageIndex()-1)*pageInfoVO.getRows());
stmt.setInt(2, pageInfoVO.getRows());
rs = stmt.executeQuery();这个是报的错误
java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]第 1 行: '@P1' 附近有语法错误。
at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)
at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processErrorToken(Unknown Source)
at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processReplyToken(Unknown Source)
at com.microsoft.jdbc.sqlserver.tds.TDSRPCRequest.processReplyToken(Unknown Source)
at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processReply(Unknown Source)
at com.microsoft.jdbc.sqlserver.SQLServerImplStatement.getNextResultType(Unknown Source)
at com.microsoft.jdbc.base.BaseStatement.commonTransitionToState(Unknown Source)
at com.microsoft.jdbc.base.BaseStatement.postImplExecute(Unknown Source)
at com.microsoft.jdbc.base.BasePreparedStatement.postImplExecute(Unknown Source)
at com.microsoft.jdbc.base.BaseStatement.commonExecute(Unknown Source)
at com.microsoft.jdbc.base.BaseStatement.executeQueryInternal(Unknown Source)
at com.microsoft.jdbc.base.BasePreparedStatement.executeQuery(Unknown Source)
实在是弄不出来了  希望高手帮帮忙

解决方案 »

  1.   

    把SQL单独拿到查询分析器里去执行
    比较容易找到问题
    欢迎加QQ群67488968
    交流J2EE技术
      

  2.   

    检查(pageInfoVO.getPageIndex()-1)*pageInfoVO.getRows()是否正确把语句放到查询分析器上直接执行
      

  3.   

    那应该是你sql语句给参数赋值的错?
    让String sql = "SELECT TOP 15 * FROM zlb_lgz_hxcf WHERE ID NOT IN (SELECT TOP ?*? ID FROM zlb_lgz_hxcf)"; 
    stmt = con.prepareStatement(sql); 
    stmt.setInt(1, (pageInfoVO.getPageIndex()-1)*pageInfoVO.getRows()); 
    stmt.setInt(2, pageInfoVO.getRows()); 改为这样试试String sql = "SELECT TOP ? * FROM zlb_lgz_hxcf WHERE ID NOT IN (SELECT TOP ? ID FROM zlb_lgz_hxcf)"; 
    stmt = con.prepareStatement(sql); stmt.setInt(1,pageSize); //pageSize为你传过来的一页显示几条数据的个数stmt.setInt(2, (pageCount-1)*pageSize); //pageCount为你传过来的第几页的个数
      

  4.   

    pageInfoVO这个对象是否为空。。然后检查下得到的数据是否不为空