簡體   English   中英

如何將表中的所有用戶放入數組或列表中並打印出來

[英]How to get all users from a table into an array or list and print it

我必須使用 Java 和 JDBC in Eclipse IDE 創建一個應用程序,它將用戶詳細信息存儲在 MySQL 數據庫中,並且能夠執行插入、刪除、顯示等操作。

我知道如何顯示所有用戶詳細信息而不將其放入如下所示的 ArrayList 中:

import java.sql.*;

public class JDBC {
    
    public static void main(String[] args) throws Exception {
        Class.forName("com.mysql.cj.jdbc.Driver");
        Connection con= DriverManager.getConnection("jdbc:mysql://localhost:3306/mydatabase","root","root");
        Statement st = con.createStatement();
        ResultSet rs = st.executeQuery("select * from student");
        
        while(rs.next())
        {
            String name1 = rs.getString("name");
            int contact1 = rs.getInt("contact");
            int age1 = rs.getInt("age");
            
            System.out.println(name1 + " " + contact1 + " " + age1);
        }
        
        st.close();
        con.close();
    }
}

但是,我要求將它放入數組或ArrayList后顯示用戶詳細信息。我不知道如何將它放入數組或ArrayList然后打印。

正如Slaw已經指出的那樣,創建一個 class 能夠存儲數據庫中的一行,遍歷結果集並為讀取的每一行添加一個新實例到列表中。 關閉連接,遍歷列表並將對象轉儲到標准 output。

假設您使用的是 Java 14 或更高版本,那么為此創建一個record會更容易(基本上是一個 class,只有最終字段和吸氣劑,以及編譯器為您生成的所有 arguments 構造函數)。 以下代碼基於您的代碼,並進行了極少的更改以采用第一段中概述的想法。

import java.sql.*;
import java.util.LinkedList;
import java.util.List;

public class JDCB {
  record Student(String name, int contact, int age) {
    // might want to override toString() to make it prettier on console
  }

  public static void main(String[] args) throws Exception {
    Class.forName("com.mysql.cj.jdbc.Driver");

    Connection con= DriverManager.getConnection("jdbc:mysql://localhost:3306/mydatabase","root","root");
    Statement st = con.createStatement();
    ResultSet rs = st.executeQuery("select * from student");

    final List<Student> students = new LinkedList<>(); // better suited for adding elements one by one than ArrayList<>

    while(rs.next()) {
      students.add(new Student(
          rs.getString("name"),
          rs.getInt("contact"),
          rs.getInt("age")
      ));
    }

    st.close();
    con.close();

    students.forEach(System.out::println);
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM