java - 在 Java 中将 MySQL 数据库项存储在 ArrayList 中

标签 java mysql jdbc arraylist

我正在使用 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/

相关文章:

java - 访问现有 SQS 队列时抛出 AWS.SimpleQueueService.NonExistentQueue 异常

php - 我如何将此数组转换为可用的 javascript 数组?

mysql - 如何根据select结果插入mysql表

grails - Grails Commons DBCP池与Tomcat JDBC池

java - 在 Xamarin 上使用此 Java 代码

java - 什么是 Java 中的隔离类加载器?

java - 解决向double Arraylist添加新值时Java堆空间错误

mysql - 如何使用 MySql 和 Mono 从存储过程中填充数据集

Mysql从PreparedStatement.getGenerateKeys()返回Long;

java - 准备语句的 SQL 语法错误?