【问题标题】:Storing a SQL column into a java array将 SQL 列存储到 java 数组中
【发布时间】:2015-02-01 00:30:29
【问题描述】:

我想使用java中的方法将sql列存储到array

我的代码:

public static String[] getAirports() {
        String airport[];


        try {
            String sql = "SELECT airportname FROM luggageApp.airport";
            Class.forName("com.mysql.jdbc.Driver");
            Connection connection = DatabaseManager.openConnection();
            Statement statement = connection.createStatement();
            PreparedStatement pst = connection.prepareStatement(sql);
            ResultSet rs = pst.executeQuery();


            ResultSetMetaData rsmetadata = rs.getMetaData();

            int columns = rsmetadata.getColumnCount();
            airport[] = new String[columns];


            while (rs.next()) {
                for (int j = 1; j < columns; j++) {
                    airport[j] = rs.getString(j);
                }
            }

            connection.close();
        } catch (Exception e) {
            e.printStackTrace();

        }

        return airport;
    }

我想要什么: 在 for 循环中,我想将所有机场名称 1 逐 1 添加到数组中,以便稍后调用此方法来填充 jCombobox。

【问题讨论】:

  • 我不确定是否为列机场拥有的单元格数量创建一个 int 变量。所以我可以在 for 循环中使用它。
  • column 变量应该先定义而不是使用它,因为它会产生编译时错误。

标签: java mysql sql arrays


【解决方案1】:

您可以执行以下操作。

int j=0;
while (rs.next()) {      
   airport[j] = rs.getString("airportname");// get value in airportname column
                                            // and add to array
   j++;
}

最好使用ArrayList 而不是array

例如:

List<String> airPorts=new ArrayList<>();
 while (rs.next()) {      
   airPorts.add(rs.getString("airportname"));                                 
}

【讨论】:

  • 您能解释一下为什么在数组上使用 ArrayList 更好吗?
  • 因为Array 的容量是固定的。其中,ArrayList 可以动态增加和减少大小。
  • @Mr.Goose array 的长度是固定的,需要定义array 的大小。不过ArrayList的长度你不用管,也不需要定义。
猜你喜欢
  • 2020-06-29
  • 1970-01-01
  • 1970-01-01
  • 2014-05-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-29
  • 1970-01-01
相关资源
最近更新 更多