为什么Java中ResultSet的索引以“ 1”而不是零开头?

时间:2018-10-28 11:10:01

标签: java jdbc resultset sqlexception

我正在尝试访问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));
}

1 个答案:

答案 0 :(得分:0)

ResultSet columns的getter方法以1开头索引(尽管在Java中索引通常以0开头)

  

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

您应该更改为

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

类似于您在二传手stPref.setString(1, className);中的索引