Connection conn = DBConnection.getConnection(); //获得连接对象


String findSQL = "select * from tb_message " +
"order by publishTime desc limit ?,?";
PreparedStatement pstmt = null; //声明预处理对象
ResultSet rs = null;
List<Message> messages = new ArrayList<Message>();
try {
pstmt = conn.prepareStatement(findSQL); //获得预处理对象并赋值

pstmt.setInt(1, page.getBeginIndex()); //查询起始点
pstmt.setInt(2, page.getEveryPage()); //查询记录数
rs = pstmt.executeQuery(); //执行查询

        
while(rs.next()) {
Message message = new Message();
message.setMessageID(rs.getInt(1)); //设置消息ID
message.setMessageTitle(rs.getString(2));//设置消息标题
message.setMessageContent(
rs.getString(3)); //设置消息内容
message.setEmployeeID(rs.getInt(4));//设置员工编号
message.setPublishTime(rs.getTimestamp(5));//设置发布时间
messages.add(message);//添加消息
}
} catch (SQLException e) {
e.printStackTrace();
} finally{
DBConnection.close(rs);
DBConnection.close(pstmt);
DBConnection.close(conn);
}
当我访问网页的时候,控制台抛出异常:com.microsoft.sqlserver.jdbc.SQLServerException: 'limit' 附近有语法错误。我查看了一下,异常是在 rs = pstmt.executeQuery();  这一行抛出的。我使用的数据库是SQL server2008。当我去掉"order by publishTime desc limit ?,?"  然后不使用PreparedStatement类来查询数据库时候,运行就正常,所以问题应该是出现在sql语法上了,但是我在网上查,却查不到类似的语法,请求大神帮助。

解决方案 »

  1.   

    SQL SERVER 可以用limit 语句么,我记得好像只有TOP吧,难道是2008支持?
      

  2.   

       我不知道能不能在sql server中使用limit语句,因为我是在学习教程,所以遇到了这个问题。 不过你说的top 怎么使用? 可以说详细点吗?
      

  3.   


    我记得limit语句好像是在mysql中用吧,你是要分页查询么,sqlserver中是用的top,这个是数据库查询方面的知识哎,那你说然后不使用PreparedStatement类来查询数据库时候,运行就正常,就是用limit能查出来正确的数据?
      

  4.   

    我是将limit去掉之后才运行正常的。那就是教程的源代码错了。因为教程给的源代码含有limit语句,而且对应的是SQL Server数据库。 我是想实现分页查询,那我试试用top.