新手jsp代码疑问 大家来找茬 请高手指教

longye33 2009-03-18 11:58:40
public List find(int i){
List list = new ArrayList();
Ticket t = null;
Connection conn = super.getConn();
PreparedStatement psmt = null;
ResultSet rs= null;

String sql = "select top ? * from dbo.Ticket ";

try {
psmt=conn.prepareStatement(sql);
psmt.setInt(1, 5);
rs = psmt.executeQuery();
while(rs.next()){
String num = rs.getString(1);
boolean flag = rs.getBoolean(2);
t = new Ticket(num,flag);
list.add(t);
System.out.println("查询完成");
}
} catch (Exception e) {
System.out.println("查询失败");
e.printStackTrace();
}finally{
super.close(conn, psmt, rs);
System.out.println("关闭完成");
}

return list;
}

使用该方法后 报错 谢谢高手指教
com.microsoft.sqlserver.jdbc.SQLServerException: '@P0' 附近有语法错误。
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doExecutePreparedStatement(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement$PrepStmtExecCmd.doExecute(Unknown Source)
at com.microsoft.sqlserver.jdbc.TDSCommand.execute(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.executeQuery(Unknown Source)关闭完成
-------------------

at dao.ticketDao.Scriptlet(ticketDao.java:54)
at dao.test.main(test.java:12)
...全文
194 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
vbubble 2011-03-25
  • 打赏
  • 举报
回复
这样的话那 top后面的问号是代表每页显示多少条数据,那时动态设置的呀…… ?的使用还有这种说法 ?请教[Quote=引用 10 楼 jjkk108 的回复:]
把SQl语句修改一下就可以了~~!select top ? * from dbo.Ticket修改为select top 5 * from dbo.Ticket!SQL语句中?站位符使用时要注意的,必须是例如:select * from books where Id=?这种的时候才可以使用? 占位符、
[/Quote]
jjkk108 2010-07-15
  • 打赏
  • 举报
回复
把SQl语句修改一下就可以了~~!select top ? * from dbo.Ticket修改为select top 5 * from dbo.Ticket!SQL语句中?站位符使用时要注意的,必须是例如:select * from books where Id=?这种的时候才可以使用? 占位符、
longye33 2009-03-18
  • 打赏
  • 举报
回复
把问号替换为实际的值后 方法可以正确运行 动态设置值的时候就报错了
jabeginner 2009-03-18
  • 打赏
  • 举报
回复
看一下你的这句sql:String sql = "select top ? * from dbo.Ticket ";

这样能行吗?
longye33 2009-03-18
  • 打赏
  • 举报
回复
楼上大哥 我改成String sql = "select top 5 * from dbo.Ticket "; 方法可以运行了 就给?设置值的时候就报错了
ngx20080110 2009-03-18
  • 打赏
  • 举报
回复
如果改成String sql = "select top 5 * from dbo.Ticket "; 运行不抱错的话,可能该jdbc驱动的接口用法不正确
longye33 2009-03-18
  • 打赏
  • 举报
回复
sql2005中
测试查询 没问题
my145793 2009-03-18
  • 打赏
  • 举报
回复
先用sql语句测试好再写上去
System.out.println();或者myeclipse断点来确定错误的地方

81,076

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧