[英]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.