我有一个 SQL 查询,我想用它来将组件计数到表中。
private DCDataObj dc;
public class DCDataObj
{
private int datacenter; // Datacenters
..............
public DCDataObj(int datacenter............)
{
this.datacenter = datacenter;
...............
}
public int getDatacenter()
{
return datacenter;
}
public void setDatacenter(int datacenter)
{
this.datacenter = datacenter;
}
............
}
ps = conn.prepareStatement("SELECT COUNT(1) AS CNT FROM COMPONENTSTATS CS, COMPONENTTYPE CT "
+ " WHERE CS.COMPONENTTYPEID = CT.COMPONENTTYPEID AND CT.COMPONENTTYPEID IN ( "
+ " ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, " // 10
+ " ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, " // 20
+ " ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, " // 30
+ " ?, ?, ?, ?, ?, ?, ?, ?, ?, ? ) " // 40
+ " GROUP BY CT.NAME ORDER BY CT.NAME");
ps.setInt(1, 1000);
...............
ResultSet result = ps.executeQuery();
while (result.next())
{
dc = new DCDataObj(
result.getInt(1),
...............
这里是完整的源代码:http://pastebin.com/YMvqBPpV
我收到此错误消息:java.sql.SQLException:无效的列索引
这是设计问题还是SQL查询有问题?
最佳答案
我看到了你的完整源代码,你有一堆result.getInt(INDEX)
。因为你只是在做SELECT COUNT(1)
,只有一列,因此对于 INDEX
的任何值除了 1 之外,getInt()
将会失败。
将查询更改为 SELECT <LIST> ...
哪里LIST
是一个逗号分隔的列名列表,您要从中检索值。
关于java.sql.SQLException : Invalid column index,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15098998/