java Jdbc列索引超出范围
有谁能告诉我,为什么getColumnClassName会告诉我,当rs.getString调用在前一行运行正常,而我从1开始迭代时,列索引超出了范围
int i = 1;
while (rs.next()) {
columns.put("id", Integer.toString(i));
columns.put("name", rs.getString(4));
columns.put("type", rs.getMetaData().getColumnClassName(i));
columns.put("nullable", Integer.toString(rs.getMetaData().isNullable(i)));
i++;
s.add(columns);
}
return s;
# 1 楼答案
每次通过while循环,都需要将
i
变量重置为1
。当前逻辑将在第二条记录上为getColumnClassName(2)
,在第三条记录上为getColumnClassName(3)
,以此类推。如果您的记录多于所选的列,则会出现索引超出范围错误不清楚您是想从记录中获取数据,还是只想获取有关返回列的元数据
如果你真的想遍历所有的列来获取类型信息,你需要得到column count并使用它