黑马程序员技术交流社区

标题: 这句SQL语句有问题吗? [打印本页]

作者: 张绍成    时间: 2011-12-23 21:26
标题: 这句SQL语句有问题吗?
本帖最后由 tianshan20081 于 2011-12-25 15:29 编辑
  1. String sql = "select top ? * from article ";
  2.                 try {
  3.                         ps = conn.prepareCall(sql);
  4.                         ps.setInt(1,5);
  5.                         rs = ps.executeQuery();
复制代码
  1. com.microsoft.sqlserver.jdbc.SQLServerException: '@P0' 附近有语法错误。
  2.         at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:197)
  3.         at com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(SQLServerStatement.java:1493)
  4.         at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doExecutePreparedStatement(SQLServerPreparedStatement.java:390)
  5.         at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement$PrepStmtExecCmd.doExecute(SQLServerPreparedStatement.java:340)
  6.         at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:4575)
  7.         at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1400)
  8.         at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(SQLServerStatement.java:179)
  9.         at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(SQLServerStatement.java:154)
  10.         at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.executeQuery(SQLServerPreparedStatement.java:283)
  11.         at com.zsc.csdn.Test.main(Test.java:18)

复制代码

作者: 李楠    时间: 2011-12-23 22:12
TOP 子句用于规定要返回的记录的数目。
但是不是每个数据库都有TOP,sql是可以用的。
TOP后面跟个数表示显示几个
或者 20 percent(数字可以变)表示百分比。
不知道你的sql语句是想实现什么?
作者: 杨丹丹    时间: 2011-12-24 04:35
select top ? * from article
貌似?后得加 *
作者: 张乐乐    时间: 2011-12-24 06:57
String sql = "select top ? from article ";
不知道你想要的是不是要返回article中的前五条数据、如果是返回前五条数据的话、那么你的?后面应该跟上你要查询的列名。比如:String sql = "select top ? title,author from article "; 或者是*,至少要指定查询的数据。
如果是想要查询的是从第几条到第几条的分页查询的话、那就要用limit了。
希望我的回答对你有帮助。
作者: 张绍成    时间: 2011-12-24 09:49
李楠 发表于 2011-12-23 22:12
TOP 子句用于规定要返回的记录的数目。
但是不是每个数据库都有TOP,sql是可以用的。
TOP后面跟个数表示显 ...

谢谢你的回答   
昨天着急 SQL 语句写错了  
应该是
  1. String sql = "select top ? * from article ";
复制代码
但是 报的错 和上次的一样。
作者: 张绍成    时间: 2011-12-24 09:49
杨丹丹 发表于 2011-12-24 04:35
select top ? * from article
貌似?后得加 *

谢谢你的回答   
昨天着急 SQL 语句写错了  
应该是
  1. String sql = "select top ? * from article ";
复制代码
但是 报的错 和上次的一样。
作者: 张绍成    时间: 2011-12-24 09:50
张乐乐 发表于 2011-12-24 06:57
String sql = "select top ? from article ";
不知道你想要的是不是要返回article中的前五条数据、如果是返 ...

谢谢你的回答   
昨天着急 SQL 语句写错了  
应该是
  1. String sql = "select top ? * from article ";
复制代码
但是 报的错 和上次的一样。

忘了说明 一下  我的数据库是   sqlserver  可以使用  limit  ?
作者: 冯瑞君老师    时间: 2011-12-24 14:57
貌似语句格式错了,我没这的写过,应该这的写。

String sql="select * from article where top=?"
作者: blackbansy    时间: 2011-12-25 01:53
是select top 6 from article  要有确切的条数,不能用问号。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2