繁体   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