【问题标题】:Why ResultSet's index in Java Starts with '1' instead of zero? [duplicate]为什么Java中ResultSet的索引以'1'而不是零开头? [复制]
【发布时间】:2019-04-01 12:28:22
【问题描述】:

我正在尝试访问 ResultSet 中的索引 0,但出现异常

 java.sql.SQLException: Column Index out of range, 0 < 1.

代码:

c = db.getConnection();

String prefQuery = "SELECT pLab from practicals where className = ? AND pFacName = ?";
PreparedStatement stPref = c.prepareStatement(prefQuery);
stPref.setString(1, className);
stPref.setString(2, facName);
ResultSet rsPref = stPref.executeQuery();

while (rsPref.next()){
    MainClass.show(rsPref.getString(0));
}

【问题讨论】:

标签: java jdbc resultset sqlexception


【解决方案1】:

ResultSet columns getters 方法以1 开始索引(尽管在Java 中索引通常以0 开始)

ResultSet 接口提供用于从当前行检索列值的 getter 方法(getBoolean、getLong 等)。可以使用列的索引号或列的名称来检索值。一般来说,使用列索引会更有效。列从 1 开始编号

你应该改成

MainClass.show(rsPref.getString(1));

类似于你在 setter 中的索引stPref.setString(1, className);

【讨论】:

    猜你喜欢
    • 2011-03-20
    • 1970-01-01
    • 1970-01-01
    • 2011-06-09
    • 1970-01-01
    • 2019-09-05
    • 1970-01-01
    • 2020-11-23
    • 2019-03-19
    相关资源
    最近更新 更多