我想分页,运行的时候出现:'@P0' 附近有语法错误。我该怎样写那个sql语句??
public class bookDao{
public Connection getConnection() {
Connection con=null;
try{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
         String url = "jdbc:sqlserver://127.0.0.1:1433;database=test;";
     // 数据库用户名
     String username = "sa";
     // 数据库密码
     String password = "";
     // 创建Connection连接
         con = (Connection) DriverManager.getConnection(url,username,password);
    
}catch (ClassNotFoundException e){
e.printStackTrace();
}catch(SQLException e){
e.printStackTrace();
}
return con;
}public List <Book>find(int page){
List<Book>list=new ArrayList<Book>();
Connection con=getConnection();
String sql= "select Top ? * from tb_book  order by id desc";
try{
PreparedStatement ps=con.prepareStatement(sql);

ps.setInt(2,Book.PAGE_SIZE);
ResultSet rs=ps.executeQuery();
 while(rs.next()){
 Book B=new Book();
 B.setId(rs.getInt("id"));
 B.setName(rs.getString("name"));
 B.setPrice(rs.getDouble("price"));
 B.setBookCount(rs.getInt("bookCount"));
 B.setAuthor(rs.getString("author"));
list.add(B);
 }
rs.close();
ps.close();
con.close();
}catch(SQLException e){
e.printStackTrace();
}
return list;
}
public int findCount(){
int count=0;
Connection con=getConnection();
String sql="select count(*)from tb_Book";
try{
Statement stmt=con.createStatement();
ResultSet rs=stmt.executeQuery(sql);
if(rs.next()){
count=rs.getInt(1);
}
rs.close();
con.close();

}catch(SQLException e){
e.printStackTrace();
        }
return count;
}
}

解决方案 »

  1.   

    String url = "jdbc:sqlserver://127.0.0.1:1433;database=test;";//test 后的分号去掉String sql= "select Top ? * from tb_book  order by id desc";//Top ? 不能这样传参String sql="select count(*)from tb_Book";//count(*)  from 
      

  2.   

    我就是不知道怎样设置Top这句?求其它方法
      

  3.   

    String sql= "select Top '"+X+"' * from tb_book  order by id desc";//Top ? x不是想穿什么传什么吗?public List <Book>find(int page,int size){
     List<Book>list=new ArrayList<Book>();
     Connection con=getConnection();
     String sql= "select Top '"+size+"' * from tb_book  order by id desc";
     try{
     PreparedStatement ps=con.prepareStatement(sql); ps.setInt(2,Book.PAGE_SIZE);
     ResultSet rs=ps.executeQuery();
      while(rs.next()){
      Book B=new Book();
      B.setId(rs.getInt("id"));
      B.setName(rs.getString("name"));
      B.setPrice(rs.getDouble("price"));
      B.setBookCount(rs.getInt("bookCount"));
      B.setAuthor(rs.getString("author"));
     list.add(B);
      }
     rs.close();
     ps.close();
     con.close();
     }catch(SQLException e){
     e.printStackTrace();
     }
     return list;
     }行不?