select top 5 a.card card,a.name name,a.address address,b.valid_timestamp valid_timestamp,b.room room,a.register_date register_date,a.last_gather_date last_gather_date from bt_member a,bt_valid_log b where a.id not in (select top 5*(page-1)a.id from bt_member a,bt_valid_log b where a.card=b.card and convert(varchar(10),valid_timestamp,121)='2011-08-26' order by a.id) and a.card=b.card and convert(varchar(10),valid_timestamp,121)='2011-08-26' order by a.id
5(page-1)换成数字可以用   但我需要根据页数  来分页   不换成数字老是报错  咋办????

解决方案 »

  1.   

    LZ你把page作为参数传入到SQL字符串看看
    String sql = "select top 5 a.card card,a.name name,a.address address,b.valid_timestamp valid_timestamp,b.room room,a.register_date register_date,a.last_gather_date last_gather_date from bt_member a,bt_valid_log b where a.id not in (select top 5*(" + page + "-1)a.id from bt_member a,bt_valid_log b where a.card=b.card and convert(varchar(10),valid_timestamp,121)='2011-08-26' order by a.id) and a.card=b.card and convert(varchar(10),valid_timestamp,121)='2011-08-26' order by a.id"
      

  2.   


    com.microsoft.sqlserver.jdbc.SQLServerException: '(' 附近有语法错误。  出这样的错误了
      

  3.   

    5*('" + page + "'-1)  这样也不行
      

  4.   

    把这个直接换成参数传进去
    int recordNum = 5*(page-1);
    String sql = "select top 5 a.card card,a.name name,a.address address,b.valid_timestamp valid_timestamp,b.room room,a.register_date register_date,a.last_gather_date last_gather_date from bt_member a,bt_valid_log b where a.id not in (select top "+ recordNum +" a.id from bt_member a,bt_valid_log b where a.card=b.card and convert(varchar(10),valid_timestamp,121)='2011-08-26' order by a.id) and a.card=b.card and convert(varchar(10),valid_timestamp,121)='2011-08-26' order by a.id"呵呵,不过,这sql语句的性能令人担忧