Java 使用 List 进行数据库查询的实例 (java list查询数据库)
Java 是一门广泛应用的编程语言,而数据库则是在许多应用中必不可少的工具。Java 应用程序中经常需要和数据库打交道,进行数据查询是其中的一个重要方面。在数据查询中,List 是一种非常有用的数据结构,能够方便快捷地存储和处理数据。本文将基于 Java 语言,介绍 List 在数据库查询中的使用方法。
一、连接数据库
在 Java 应用程序中,我们需要使用 JDBC 来连接数据库。JDBC 是一个 Java API(应用程序接口),用于连接各种类型的关系型数据库,并实现数据的读写。在使用 JDBC 之前,需要下载并安装数据库驱动程序,这样才能在 Java 应用程序中使用 JDBC API。
具体而言,在使用 JDBC 连接数据库时,我们需要先加载数据库驱动程序。对于 MySQL 数据库而言,可以通过 Class.forName() 方法来加载驱动程序:
Class.forName(“com.mysql.jdbc.Driver”);
在加载驱动程序之后,我们还需要创建一个 Connection 对象,该对象表示与数据库的连接。Connection 对象可以通过 DriverManager.getConnection() 方法来获取:
String url = “jdbc:mysql://localhost:3306/test”;
String user = “root”;
String password = “”;
Connection conn = DriverManager.getConnection(url, user, password);
上述代码中,url 表示数据库的地址,user 和 password 分别表示数据库的用户名和密码。创建完 Connection 对象后,就可以通过该对象来执行 SQL 查询了。
二、实现查询操作
在使用 JDBC 进行数据库查询时,一般需要先创建一个 Statement 对象。该对象用于执行 SQL 语句并返回结果。在创建 Statement 对象后,就可以通过该对象来执行 SQL 查询:
Statement stmt = conn.createStatement();
String sql = “SELECT * FROM student WHERE age > 18”;
ResultSet rs = stmt.executeQuery(sql);
上述代码中,sql 表示要执行的 SQL 语句。在执行 SQL 查询后,会返回一个 ResultSet 对象,其中包含了查询结果。ResultSet 对象的每一行对应查询结果中的一条数据。
接下来,我们需要将 ResultSet 中的数据存储到 List 中。在存储之前,需要先判断 ResultSet 中是否还有下一行数据。在判断过程中,可以使用 ResultSet 对象的 next() 方法。该方法返回值为 boolean 类型,表示 ResultSet 中是否还有下一行数据。如果还有,则返回 true;否则返回 false。
while (rs.next()) {
int id = rs.getInt(“id”);
String name = rs.getString(“name”);
int age = rs.getInt(“age”);
Student student = new Student(id, name, age);
list.add(student);
}
上述代码中,我们通过遍历 ResultSet 对象,逐行取出数据,并创建 Student 对象。然后将 Student 对象存储到 List 中。在取数据的过程中,可以通过 ResultSet 对象的 getXXX() 方法来获取某一列的数据,其中 XXX 表示数据类型。例如,getInt() 方法用于获取整型数据,getString() 方法用于获取字符串数据等。
在完成查询操作后,需要关闭 ResultSet 对象、Statement 对象和 Connection 对象:
rs.close();
stmt.close();
conn.close();
三、应用示例
下面,我们通过一个实际的 Java 应用程序来演示 List 在数据库查询中的应用。该程序可用于查询 MySQL 数据库中的学生信息。
1、创建表
我们需要在 MySQL 数据库中创建一个名为 student 的表。该表包含三个字段,分别为 id、name 和 age。其中,id 为 int 类型,是主键;name 和 age 分别为 varchar 和 int 类型。
CREATE TABLE `student` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) NOT NULL,
`age` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
2、插入数据
接下来,我们需要向 student 表中插入一些数据。可以使用以下 SQL 语句:
INSERT INTO `student` (`name`, `age`) VALUES (‘Tom’, 18);
INSERT INTO `student` (`name`, `age`) VALUES (‘Jerry’, 19);
INSERT INTO `student` (`name`, `age`) VALUES (‘Tony’, 20);
INSERT INTO `student` (`name`, `age`) VALUES (‘Mike’, 21);
3、编写 Java 应用程序
在 Java 应用程序中,我们需要先创建一个 Student 类,用于表示学生信息:
public class Student {
private int id;
private String name;
private int age;
public Student(int id, String name, int age) {
super();
this.id = id;
this.name = name;
this.age = age;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
然后,我们编写一个名为 StudentDao 的类,用于实现数据库查询操作。在该类中,我们使用 List 数据结构来存储查询结果。
public class StudentDao {
private Connection conn;
public StudentDao() {
String url = “jdbc:mysql://localhost:3306/test”;
String user = “root”;
String password = “”;
try {
Class.forName(“com.mysql.jdbc.Driver”);
conn = DriverManager.getConnection(url, user, password);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
public List query() {
List list = new ArrayList();
Statement stmt;
try {
stmt = conn.createStatement();
String sql = “SELECT * FROM student WHERE age > 18”;
ResultSet rs = stmt.executeQuery(sql);
while (rs.next()) {
int id = rs.getInt(“id”);
String name = rs.getString(“name”);
int age = rs.getInt(“age”);
Student student = new Student(id, name, age);
list.add(student);
}
rs.close();
stmt.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
return list;
}
}
在 StudentDao 类中,我们先创建一个 Connection 对象(在类的构造函数中)。然后,在 query() 方法中,我们创建一个 Statement 对象,并执行 SQL 查询。在查询完成后,将查询结果存储到 List 中。关闭 ResultSet、Statement 和 Connection 对象,并返回 List 对象。
4、测试程序
接下来,我们在 Mn 类中测试刚刚编写的 StudentDao 类:
public class Mn {
public static void mn(String[] args) {
StudentDao dao = new StudentDao();
List list = dao.query();
for (Student student : list) {
System.out.println(student.getName() + “, ” + student.getAge());
}
}
}
在 Mn 类中,我们先创建一个 StudentDao 对象,并调用其 query() 方法进行查询。查询完成后,在控制台输出查询结果。
四、