我正在使用 JDBC 连接到 MySQL 数据库,我需要检索表中的所有项目并将它们存储在 ArrayList 中。这是我正在使用的代码:
Connection con;
Statement statement;
ResultSet resultSet;
ArrayList<String> inventorySet = new ArrayList<String>();
ResultSetMetaData md;
try
{
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection(url, root, password);
statement = con.createStatement();
resultSet = statement.executeQuery("SELECT inventory FROM inventory");
md = resultSet.getMetaData();
for(int i = 1; i <= md.getColumnCount(); i++)
{
inventorySet.add(resultSet.getString(i));
}
}catch(ClassNotFoundException e)
{
e.printStackTrace();
}catch(SQLException e)
{
e.printStackTrace();
}
但是我收到此错误:
java.sql.SQLException: Before start of result set
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:996)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:935)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:924)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:870)
at com.mysql.jdbc.ResultSetImpl.checkRowPos(ResultSetImpl.java:781)
at com.mysql.jdbc.ResultSetImpl.getStringInternal(ResultSetImpl.java:5239)
at com.mysql.jdbc.ResultSetImpl.getString(ResultSetImpl.java:5162)
at Inventory.main(Inventory.java:136)
如何解决这个问题?
最佳答案
在尝试访问一行数据之前,您需要执行resultSet.next();
。根据您的查询,您从表“库存”中选择 1 列“库存”。所以我不确定为什么您会得到列数,因为只有 1 列。
此外,如果您想循环所有记录,您应该使用如下循环:
while(resultSet.next())
{
//code here
}
关于java - 在 Java 中将 MySQL 数据库项存储在 ArrayList 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27533374/