strSQL="select top ? * from table1";
PrepareStatement ps = conn.prepareStatement(strSQL);
ps.setInt(1,25);
ps.execute();
报错java.sql.SQLException: 第 1 行: '@P0' 附近有语法错误。是不是?
不能用在from前面

解决方案 »

  1.   

    用数字是可以的(select   top 2 *  from bustable)
    但是传递值,我没有试过,呵呵~
      

  2.   

    主要是语法错误
    当然你可以把?改成数字但也要注意的
    如果你连接的数据库是mysql也会报错的。因为mysql 不支持top n的写法 
    top n的写法是sql server 和access的写法 
    mysql 只支持 limit n的写法例如:
    LIMIT可以实现top N查询,也可以实现M至N(某一段)的记录查询,具体语法如下:SELECT * FROM MYTABLE
    ORDER BY AFIELDLIMIT offset, recnum
    其中offset为从第几条(M+1)记录开始,recnum为返回的记录条数。例:select * from mytable
    order by afieldlimit 2, 5即意为从第3条记录开始的5条记录。资料引用:http://www.knowsky.com/2893.html
      

  3.   

    数据库是  MS SQLSERVER
      

  4.   


    改成数字当然是可以的。但是现在实际应用中,这个数字是作为参数传入的。
    开来只能通过动态拼接sql语句的方式解决这个问题了。 [Quote=引用 1 楼 sunhualong5560 的回复:]
    引用楼主 looyo 的帖子:
    是不是? 
    不能用在from前面 
     ?改成数字试一下不就清楚了吗
      

  5.   

    你的这个方法是行不通的。。TOP N 是要代一个具体的数字,
    传参的话不支持。。