记录6
JavaWeb每日学习记录(第6天):数据库操作与JDBC
今天是JavaWeb学习的第九天,我主要学习了如何在JavaWeb中进行数据库操作。数据库是Web应用的核心组成部分,而JDBC(Java Database Connectivity)是Java中用于操作数据库的标准API。通过今天的实践,我掌握了如何在JavaWeb中连接数据库、执行SQL语句以及处理结果集。
一、JDBC基础与数据库连接
在JavaWeb中,JDBC是操作数据库的核心技术。通过JDBC,可以实现对数据库的增、删、改、查操作。为了更好地理解JDBC的使用,我首先学习了如何连接数据库。
示例1:连接MySQL数据库
1.引入MySQL驱动依赖(Maven配置)
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.28</version>
</dependency>
2.数据库连接工具类(DBUtil.java)
为了方便管理数据库连接,我编写了一个工具类DBUtil
,用于获取和关闭数据库连接。
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class DBUtil {
private static final String URL = "jdbc:mysql://localhost:3306/mydatabase?useSSL=false&serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8";
private static final String USER = "root";
private static final String PASSWORD = "password";
static {
try {
Class.forName("com.mysql.cj.jdbc.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
public static Connection getConnection() throws SQLException {
return DriverManager.getConnection(URL, USER, PASSWORD);
}
public static void close(Connection conn) {
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
通过这个工具类,我可以方便地获取和关闭数据库连接,避免重复代码。
二、执行SQL语句
在JavaWeb中,可以通过JDBC执行SQL语句来操作数据库。我重点学习了如何执行INSERT
、UPDATE
、DELETE
和SELECT
语句。
示例2:用户信息的增删改查
1.创建用户表
在MySQL数据库中,我创建了一个users
表,用于存储用户信息。
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL,
password VARCHAR(50) NOT NULL,
email VARCHAR(100)
);
2.用户操作类(UserDAO.java)
我编写了一个用户操作类UserDAO
,用于实现用户信息的增删改查。
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class UserDAO {
// 添加用户
public void addUser(String username, String password, String email) {
String sql = "INSERT INTO users (username, password, email) VALUES (?, ?, ?)";
try (Connection conn = DBUtil.getConnection();
PreparedStatement ps = conn.prepareStatement(sql)) {
ps.setString(1, username);
ps.setString(2, password);
ps.setString(3, email);
ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
}
// 删除用户
public void deleteUser(int id) {
String sql = "DELETE FROM users WHERE id = ?";
try (Connection conn = DBUtil.getConnection();
PreparedStatement ps = conn.prepareStatement(sql)) {
ps.setInt(1, id);
ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
}
// 更新用户信息
public void updateUser(int id, String username, String password, String email) {
String sql = "UPDATE users SET username = ?, password = ?, email = ? WHERE id = ?";
try (Connection conn = DBUtil.getConnection();
PreparedStatement ps = conn.prepareStatement(sql)) {
ps.setString(1, username);
ps.setString(2, password);
ps.setString(3, email);
ps.setInt(4, id);
ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
}
// 查询所有用户
public void listUsers() {
String sql = "SELECT * FROM users";
try (Connection conn = DBUtil.getConnection();
PreparedStatement ps = conn.prepareStatement(sql);
ResultSet rs = ps.executeQuery()) {
while (rs.next()) {
System.out.println("ID: " + rs.getInt("id") +
", Username: " + rs.getString("username") +
", Email: " + rs.getString("email"));
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
3.测试数据库操作
在main
方法中,我测试了用户信息的增删改查操作。
public class Main {
public static void main(String[] args) {
UserDAO userDAO = new UserDAO();
// 添加用户
userDAO.addUser("Alice", "123", "alice@example.com");
userDAO.addUser("Bob", "456", "bob@example.com");
// 查询所有用户
userDAO.listUsers();
// 更新用户信息
userDAO.updateUser(1, "Alice", "123", "alice_new@example.com");
// 删除用户
userDAO.deleteUser(2);
// 查询所有用户
userDAO.listUsers();
}
}
通过这些操作,我成功实现了用户信息的增删改查,并验证了数据库操作的正确性。
三、在Web应用中使用JDBC
在Web应用中,通常需要结合Servlet和JSP来实现数据库操作。我编写了一个简单的用户管理功能,用户可以通过Web页面添加、删除和查看用户信息。
示例3:用户管理功能
1.添加用户Servlet(AddUserServlet.java)
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/addUser")
public class AddUserServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
String username = request.getParameter("username");
String password = request.getParameter("password");
String email = request.getParameter("email");
UserDAO userDAO = new UserDAO();
userDAO.addUser(username, password, email);
response.sendRedirect("listUsers");
}
}
2.用户列表Servlet(ListUsersServlet.java)
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
@WebServlet("/listUsers")
public class ListUsersServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
UserDAO userDAO = new UserDAO();
List<User> users = new ArrayList<>();
try (ResultSet rs = userDAO.listUsers()) {
while (rs.next()) {
User user = new User(
rs.getInt("id"),
rs.getString("username"),
rs.getString("password"),
rs.getString("email")
);
users.add(user);
}
} catch (SQLException e) {
e.printStackTrace();
}
request.setAttribute("users", users);
request.getRequestDispatcher("/userList.jsp").forward(request, response);
}
}
3.用户列表页面(userList.jsp)
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<title>用户列表</title>
</head>
<body>
<h1>用户列表</h1>
<table border="1">
<tr>
<th>ID</th>
<th>用户名</th>
<th>邮箱</th>
<th>操作</th>
</tr>
<c:forEach items="${users}" var="user">
<tr>
<td>${user.id}</td>
<td>${user.username}</td>
<td>${user.email}</td>
<td>
<a href="deleteUser?id=${user.id}">删除</a>
</td>
</tr>
</c:forEach>
</table>
</body>
</html>
通过这些代码,我实现了一个简单的用户管理系统,用户可以通过Web页面添加、删除和查看用户信息。
四、总结
今天我学习了JavaWeb中的数据库操作。通过JDBC,我掌握了如何连接数据库、执行SQL语句以及处理结果集。同时,我将JDBC与Servlet、JSP结合,实现了一个简单的用户管理系统,进一步巩固了数据库操作的使用。
数据库操作是Web应用的核心功能