You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

java.sql.SQLException列索引越界(2>1)问题排查求助

问题根源分析与解决方案

这个Column Index out of range, 2 > 1错误的直接原因非常明确——你的SQL查询只返回了1列数据,但你在代码里尝试获取第2列的值。

1. 核心错误点:ResultSet取值超出查询结果范围

看你的SQL语句:

String req = "Select A.CodeA from album A, collabo C where A.CodeA = C.CodeA order by 1 ";

这条语句只查询了A.CodeA这一列,所以返回的ResultSet里只有索引为1的列(JDBC中列索引从1开始)。但你在遍历ResultSet时,却调用了:

new Appareil(resu.getString(1), new Album (resu.getString(2)))

这里的resu.getString(2)试图获取第2列,而结果集中根本没有这一列,直接触发了SQLException。

2. 如何修复?

你需要根据Appareil构造函数的需求,调整SQL语句,确保查询返回足够的列。比如,如果Album需要的是A.CodeA之外的另一字段(比如专辑名称A.AlbumName),你需要把它加到SELECT子句中:

// 示例:假设Album需要A.CodeA和A.AlbumName两列
String req = "Select A.CodeA, A.AlbumName from album A, collabo C where A.CodeA = C.CodeA order by 1 ";

如果Album其实只需要A.CodeA来初始化,那你可以直接复用第一列的值:

myList.add(new Appareil(resu.getString(1), new Album(resu.getString(1))));

3. 关于TableModel的疑问

你的TableModelAppareils代码本身没有问题,它只设置了"Identification"一列,并且从Appareil的getAppAlb().getCodeA()获取值。但前提是myList中的Appareil对象能被正确初始化——而现在的问题是你根本没机会完成这一步,因为ResultSet取值的错误已经提前抛出异常了。所以先解决SQL和ResultSet的问题,TableModel的功能自然就能正常运行。

内容的提问来源于stack exchange,提问作者juliee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:15:32