首页 综合百科文章正文

javaweb连接数据库实现增删改查

综合百科 2025年11月17日 19:43 241 admin

JavaWeb实战:数据库连接与增删改查操作全解析

在JavaWeb开发中,数据库连接和数据操作是核心功能之一,本文将详细介绍如何在JavaWeb应用中实现数据库的连接,以及如何进行增、删、改、查(CRUD)操作,我们将使用JDBC(Java Database Connectivity)来实现这些功能,并结合Tomcat作为服务器运行环境。

准备工作

在开始之前,确保你已经完成了以下准备工作:

  1. 安装JDK:确保你的系统上已经安装了JDK。
  2. 安装Tomcat:下载并安装Tomcat服务器,版本建议使用8.0及以上。
  3. 创建数据库和表:在你的数据库管理系统(如MySQL、Oracle等)中创建一个数据库和一张表。

配置数据库连接

我们需要在项目中配置数据库连接,这通常通过web.xml文件或者Spring框架中的配置文件来完成,这里我们以web.xml为例:

<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
    <resource-ref>
        <description>DB Connection</description>
        <res-ref-name>jdbc/MyDB</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <res-auth>Container</res-auth>
    </resource-ref>
</web-app>

然后在context.xml文件中配置数据源:

<Context>
    <Resource name="jdbc/MyDB" auth="Container" type="javax.sql.DataSource"
              maxTotal="100" maxIdle="30" maxWaitMillis="10000"
              username="yourUsername" password="yourPassword" driverClassName="com.mysql.cj.jdbc.Driver"
              url="jdbc:mysql://localhost:3306/yourDatabase"/>
</Context>

编写数据库操作类

我们需要编写一个数据库操作类,用于执行增删改查操作,这个类将包含四个方法:insert(), delete(), update(), 和 select()

import java.sql.*;
public class DatabaseUtil {
    private static final String URL = "jdbc:mysql://localhost:3306/yourDatabase";
    private static final String USER = "yourUsername";
    private static final String PASSWORD = "yourPassword";
    private static Connection getConnection() throws SQLException {
        return DriverManager.getConnection(URL, USER, PASSWORD);
    }
    public static void insert(String sql) throws SQLException {
        try (Connection conn = getConnection();
             PreparedStatement pstmt = conn.prepareStatement(sql)) {
            pstmt.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
            throw e;
        }
    }
    public static void delete(String sql) throws SQLException {
        try (Connection conn = getConnection();
             PreparedStatement pstmt = conn.prepareStatement(sql)) {
            pstmt.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
            throw e;
        }
    }
    public static void update(String sql) throws SQLException {
        try (Connection conn = getConnection();
             PreparedStatement pstmt = conn.prepareStatement(sql)) {
            pstmt.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
            throw e;
        }
    }
    public static void select(String sql, ResultSetHandler handler) throws SQLException {
        try (Connection conn = getConnection();
             PreparedStatement pstmt = conn.prepareStatement(sql);
             ResultSet rs = pstmt.executeQuery()) {
            handler.handle(rs);
        } catch (SQLException e) {
            e.printStackTrace();
            throw e;
        }
    }
}

结果集处理类

为了简化代码,我们可以定义一个接口ResultSetHandler来处理查询结果:

javaweb连接数据库实现增删改查

import java.sql.ResultSet;
import java.sql.SQLException;
public interface ResultSetHandler {
    void handle(ResultSet rs) throws SQLException;
}

然后我们可以创建一个实现该接口的类来处理具体的业务逻辑:

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public class UserHandler implements ResultSetHandler {
    @Override
    public void handle(ResultSet rs) throws SQLException {
        List<User> users = new ArrayList<>();
        while (rs.next()) {
            User user = new User();
            user.setId(rs.getInt("id"));
            user.setName(rs.getString("name"));
            user.setEmail(rs.getString("email"));
            users.add(user);
        }
        // 这里可以进一步处理users列表,例如返回给前端或保存到其他地方
    }
}

测试代码

我们可以编写一个简单的Servlet来测试我们的数据库操作类:

javaweb连接数据库实现增删改查

import javax.servlet.ServletException;
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.sql.SQLException;
@WebServlet("/test")
public class TestServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        try {
            // 插入一条记录
            String insertSql = "INSERT INTO users (name, email) VALUES ('John Doe', 'john@example.com')";
            DatabaseUtil.insert(insertSql);
            // 查询所有记录
            String selectSql = "SELECT * FROM users";
            DatabaseUtil.select(selectSql, new UserHandler());
        } catch (SQLException e) {
            e.printStackTrace();
            response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "数据库操作失败");
        }
    }
}

就是在JavaWeb应用中实现数据库连接和CRUD操作的基本步骤。

标签: 增删改查

发表评论

丫丫技术百科 备案号:新ICP备2024010732号-62