strSQL="select top ? * from table1";
PrepareStatement ps = conn.prepareStatement(strSQL);
ps.setInt(1,25);
ps.execute();
报错java.sql.SQLException: 第 1 行: '@P0' 附近有语法错误。是不是?
不能用在from前面
PrepareStatement ps = conn.prepareStatement(strSQL);
ps.setInt(1,25);
ps.execute();
报错java.sql.SQLException: 第 1 行: '@P0' 附近有语法错误。是不是?
不能用在from前面
但是传递值,我没有试过,呵呵~
当然你可以把?改成数字但也要注意的
如果你连接的数据库是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
改成数字当然是可以的。但是现在实际应用中,这个数字是作为参数传入的。
开来只能通过动态拼接sql语句的方式解决这个问题了。 [Quote=引用 1 楼 sunhualong5560 的回复:]
引用楼主 looyo 的帖子:
是不是?
不能用在from前面
?改成数字试一下不就清楚了吗
传参的话不支持。。