gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 07:46:48 25 4
gpt4 key购买 nike

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com