java.sql.SQLException: 列索引超出范围
java.sql.SQLException: Column Index out of range
我在 Navicat 中执行以下 MYSQL 命令时需要帮助,我得到
mysql> SELECT Password FROM workers;
+----------+
| Password |
+----------+
| A |
| B |
| B |
| B |
| B |
当我在 java 中触发它时,我得到
java.sql.SQLException: Column Index out of range, 3 > 2.
代码:-
try {
ArrayList<String> A = new ArrayList<String>();
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/employees", "root", "123456");
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("SELECT Password FROM workers");
int c =1;
while(rs.next())
{
A.add(rs.getString(c));
c++;
}
con.close();
} catch (Exception e) {
System.out.println(e);
}
由于您只得到 1 列,您超出了范围。您按如下方式更改代码,并删除计数器。
try {
ArrayList<String> A = new ArrayList<String>();
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/employees", "root", "123456");
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("SELECT Password FROM workers");
while(rs.next())
{
A.add(rs.getString("Password"));
}
con.close();
} catch (Exception e) {
System.out.println(e);
}
您的数据库中有 5 个条目 table 并执行以下代码:
int c = 1;
while (rs.next()) {
A.add(rs.getString(c)); // get value at column
c++;
}
- 第一次迭代:
rs.getString(1)
,获取第 1 列的值
- 第二次迭代:
rs.getString(2)
,获取第 2 列的值
- 等等
现在,您的 table 只有一列,因此您应该使用
访问您的值
rs.getString(int column)
,这里总是 1
rs.getString(String columnLabel)
,此处密码
我在 Navicat 中执行以下 MYSQL 命令时需要帮助,我得到
mysql> SELECT Password FROM workers;
+----------+
| Password |
+----------+
| A |
| B |
| B |
| B |
| B |
当我在 java 中触发它时,我得到
java.sql.SQLException: Column Index out of range, 3 > 2.
代码:-
try {
ArrayList<String> A = new ArrayList<String>();
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/employees", "root", "123456");
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("SELECT Password FROM workers");
int c =1;
while(rs.next())
{
A.add(rs.getString(c));
c++;
}
con.close();
} catch (Exception e) {
System.out.println(e);
}
由于您只得到 1 列,您超出了范围。您按如下方式更改代码,并删除计数器。
try {
ArrayList<String> A = new ArrayList<String>();
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/employees", "root", "123456");
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("SELECT Password FROM workers");
while(rs.next())
{
A.add(rs.getString("Password"));
}
con.close();
} catch (Exception e) {
System.out.println(e);
}
您的数据库中有 5 个条目 table 并执行以下代码:
int c = 1;
while (rs.next()) {
A.add(rs.getString(c)); // get value at column
c++;
}
- 第一次迭代:
rs.getString(1)
,获取第 1 列的值 - 第二次迭代:
rs.getString(2)
,获取第 2 列的值 - 等等
现在,您的 table 只有一列,因此您应该使用
访问您的值rs.getString(int column)
,这里总是 1rs.getString(String columnLabel)
,此处密码