【JavaWeb】封装JDBC连接操作数据库:
数据库:
自行建库建表
后端:
新建项目模块
选择模块,添加依赖
创建配置文件:
db.properties
driver=com.mysql.cj.jdbc.Driver
user=root
url=jdbc:mysql://127.0.0.1:3306/csdn
password=ROOT
Java类
- DBUtil.java
package resources;
import java.sql.*;
import java.util.ResourceBundle;
//
public class DBUtil {
private static ResourceBundle bundle = ResourceBundle.getBundle("resources/db");
private static String driver = bundle.getString("driver");
private static String url = bundle.getString("url");
private static String user = bundle.getString("user");
private static String password = bundle.getString("password");
// 驱动注册
static {
try {
Class.forName(driver);
// 本质上: 在 进行类加载的时候,给我把 com.mysql.cj.jdbc.Driver
// com.mysql.cj.jdbc. 下面的 Driver这类 com.mysql.cj.jdbc.Driver . class 加载到
// 方法区内存中(元空间)
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
// 方法的设计者角度 设计连接对象的静态方法
public static Connection getConnection() throws SQLException {
Connection connection = DriverManager.getConnection(url, user, password);
// 此处的异常不处理,抛出去,谁调用我,谁来处理异常
return connection;
}
// 设计关闭流的静态方法 方法设计者
public static void close(ResultSet rs, Statement st, Connection con) {
// Statement 是 PreparedStatement ps 的父接口
// 调用者 用 Statement PreparedStatement 都支持
// 若第二个参数为 PreparedStatement ps 那么调用者 用 Statement 时会报错,或者要强制类型转换
if (rs != null) {
try {
rs.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
if (st != null) {
try {
st.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
if (con != null) {
try {
con.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
}
}
- list.java
package com.swc;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import resources.DBUtil;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
@WebServlet("/list")
public class list extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
// 响应的类型
response.setContentType("text/html");
PrintWriter out = response.getWriter();
Connection con = null;
Statement st = null;
ResultSet rs = null;//查询结果集对象
try {
con = DBUtil.getConnection();
con.setAutoCommit(false);
String sql = "select * from pfive_jdbcdbutil";
st = con.createStatement();
rs = st.executeQuery(sql);
out.print(" <!DOCTYPE html>");
out.print("<html lang='en'>");
out.print("<head>");
out.print(" <meta charset='UTF-8'>");
out.print(" <meta name='viewport' content='width=device-width, initial-scale=1.0'>");
out.print(" <title>Document</title>");