您的位置:

JDBC工具类的封装与使用

一、从JDBC工具类抽取

JDBC(Java 数据库连接)是用于连接和操作数据库的Java API,它定义了一系列的接口和类,使得Java程序能够与数据库进行交互。而在进行JDBC编程时,我们通常需要编写许多样板代码,如加载数据库驱动、创建数据库连接、关闭连接等操作,这些重复的代码极大地影响了编程效率。

为了解决这个问题,在实际开发中,我们通常封装一个JDBC工具类,将其中常用的连接和关闭数据库等操作封装起来,简化了JDBC编程的流程。

下面是一个简单的JDBC工具类的示例代码:

public class JDBCUtils {
    private static String url = "jdbc:mysql://localhost:3306/test";
    private static String user = "root";
    private static String password= "123456";

    // 加载数据库驱动
    static {
        try {
            Class.forName("com.mysql.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

    // 获取数据库连接
    public static Connection getConnection() throws SQLException {
        return DriverManager.getConnection(url, user, password);
    }

    // 关闭数据库连接
    public static void close(ResultSet rs, Statement stmt, Connection conn) {
        try {
            if (rs != null) {
                rs.close();
            }
            if (stmt != null) {
                stmt.close();
            }
            if (conn != null) {
                conn.close();
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

二、JDBC工具类封装实体类

JDBC工具类的另一个重要作用是封装实体类,使得我们可以通过对实体类的操作来对数据库进行增删改查。一般来说,我们需要为每一个实体类定义一个DAO(Data Access Object)类,该类中包含实体类的增删改查方法,这些方法会调用JDBC工具类中的方法来操作数据库。下面是一个DAO类的示例代码:

public class UserDAO {
    // 增加用户
    public void addUser(User user) {
        Connection conn = null;
        PreparedStatement stmt = null;
        try {
            conn = JDBCUtils.getConnection();
            String sql = "insert into user(name, age, gender) values(?, ?, ?)";
            stmt = conn.prepareStatement(sql);
            stmt.setString(1, user.getName());
            stmt.setInt(2, user.getAge());
            stmt.setString(3, user.getGender());
            stmt.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            JDBCUtils.close(null, stmt, conn);
        }
    }

    // 删除用户
    public void deleteUser(User user) {
        Connection conn = null;
        PreparedStatement stmt = null;
        try {
            conn = JDBCUtils.getConnection();
            String sql = "delete from user where id=?";
            stmt = conn.prepareStatement(sql);
            stmt.setInt(1, user.getId());
            stmt.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            JDBCUtils.close(null, stmt, conn);
        }
    }

    // 更新用户
    public void updateUser(User user) {
        Connection conn = null;
        PreparedStatement stmt = null;
        try {
            conn = JDBCUtils.getConnection();
            String sql = "update user set name=?, age=?, gender=? where id=?";
            stmt = conn.prepareStatement(sql);
            stmt.setString(1, user.getName());
            stmt.setInt(2, user.getAge());
            stmt.setString(3, user.getGender());
            stmt.setInt(4, user.getId());
            stmt.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            JDBCUtils.close(null, stmt, conn);
        }
    }

    // 根据id查找用户
    public User findUserById(int id) {
        Connection conn = null;
        PreparedStatement stmt = null;
        ResultSet rs = null;
        try {
            conn = JDBCUtils.getConnection();
            String sql = "select * from user where id=?";
            stmt = conn.prepareStatement(sql);
            stmt.setInt(1, id);
            rs = stmt.executeQuery();
            if (rs.next()) {
                User user = new User();
                user.setId(rs.getInt("id"));
                user.setName(rs.getString("name"));
                user.setAge(rs.getInt("age"));
                user.setGender(rs.getString("gender"));
                return user;
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            JDBCUtils.close(rs, stmt, conn);
        }
        return null;
    }

    // 查找所有用户
    public List findAllUsers() {
        List
    userList = new ArrayList<>();
        Connection conn = null;
        Statement stmt = null;
        ResultSet rs = null;
        try {
            conn = JDBCUtils.getConnection();
            String sql = "select * from user";
            stmt = conn.createStatement();
            rs = stmt.executeQuery(sql);
            while (rs.next()) {
                User user = new User();
                user.setId(rs.getInt("id"));
                user.setName(rs.getString("name"));
                user.setAge(rs.getInt("age"));
                user.setGender(rs.getString("gender"));
                userList.add(user);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            JDBCUtils.close(rs, stmt, conn);
        }
        return userList;
    }
}

   
  

三、JDBC工具类连接数据库步骤

JDBC工具类连接数据库的步骤如下:

1、加载数据库驱动

在进行JDBC编程时,我们需要先加载数据库驱动,例如MySQL的驱动为com.mysql.jdbc.Driver。我们可以通过以下代码来加载MySQL数据库驱动:

Class.forName("com.mysql.jdbc.Driver");

2、创建数据库连接

一旦加载了数据库驱动,我们就可以使用DriverManager类来创建数据库连接。连接数据库的过程需要指定数据库的URL、用户名和密码。例如:

String url = "jdbc:mysql://localhost:3306/test";
String user = "root";
String password = "123456";
Connection conn = DriverManager.getConnection(url, user, password);

3、创建Statement对象

创建Statement对象可以执行SQL语句并返回结果集。例如:

Statement stmt = conn.createStatement();
String sql = "select * from user";
ResultSet rs = stmt.executeQuery(sql);

4、执行SQL

对于INSERT、UPDATE和DELETE语句,我们可以使用Statement对象或者PreparedStatement对象执行SQL。例如:

// Statement对象
String sql1 = "insert into user(name, age, gender) values('Tom', 20, 'male')";
stmt.executeUpdate(sql1);

// PreparedStatement对象
String sql2 = "insert into user(name, age, gender) values(?, ?, ?)";
PreparedStatement pstmt = conn.prepareStatement(sql2);
pstmt.setString(1, "Tom");
pstmt.setInt(2, 20);
pstmt.setString(3, "male");
pstmt.executeUpdate();

5、处理结果

对于SELECT语句,我们需要使用ResultSet对象处理结果集。例如:

while (rs.next()) {
    int id = rs.getInt("id");
    String name = rs.getString("name");
    int age = rs.getInt("age");
    String gender = rs.getString("gender");
}

6、关闭连接

使用完数据库连接后,我们需要将其关闭,以释放资源。例如:

if (rs != null) {
    rs.close();
}
if (stmt != null) {
    stmt.close();
}
if (conn != null) {
    conn.close();
}

四、JDBC工具类怎么写

封装一个JDBC工具类的关键在于将加载驱动、创建连接和关闭连接等繁琐的操作封装起来,使得我们调用起来更加简洁方便。下面是一份常见的JDBC工具类:

public class JDBCUtils {
    private static String url = "jdbc:mysql://localhost:3306/test";
    private static String user = "root";
    private static String password = "123456";

    private JDBCUtils() {
    }

    // 注册驱动,静态代码块
    static {
        try {
            Class.forName("com.mysql.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

    /**
     * 获取连接对象
     *
     * @return 连接对象
     * @throws SQLException SQL异常
     */
    public static Connection getConnection() throws SQLException {
        return DriverManager.getConnection(url, user, password);
    }

    /**
     * 释放资源
     *
     * @param conn 连接对象
     * @param stmt Statement语句执行对象
     * @param rs   结果集
     */
    public static void close(Connection conn, Statement stmt, ResultSet rs) {
        if (rs != null) {
            try {
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (stmt != null) {
            try {
                stmt.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (conn != null) {
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

五、JDBC工具类属于模型层吗

JDBC工具类属于模型层。在MVC(Model-View-Controller)架构中,模型层是负责处理数据和状态的一层,它与数据库进行交互,封装了数据库的操作,向上层提供API来操作实体类。而JDBC工具类正是负责连接和操作数据库的,因此属于模型层。

六、JDBC工具类是什么

JDBC工具类是一个Java类,封装了JDBC编程的相关操作,如加载数据库驱动、建立数据库连接、执行SQL语句、处理结果集等。它的主要作用是简化JDBC编程的流程,减少重复的样板代码,提高了程序员的开发效率。

七、JDBC编程的六个步骤

JDBC编程的六个步骤如下:

1、加载数据库驱动

通过Class.forName()方法加载数据库驱动,例:

Class.forName("com.mysql.jdbc.Driver");

2、建立数据库连接

使用DriverManager.getConnection()方法建立数据库连接,如:

String url = "jdbc:mysql://localhost:3306/test";
String user = "root";
String password = "123456";
Connection conn = DriverManager.getConnection(url, user, password);

3、创建Statement对象

使用Connection.createStatement()方法创建Statement对象,如:

Statement stmt = conn.createStatement();

4、执行SQL语句

使用Statement.executeXXX()方法执行SQL语句,如:

String sql = "select * from user";
ResultSet rs = stmt.executeQuery(sql);

5、处理结果集

使用ResultSet对象处理结果集,如:

while (rs.next()) {
    int id = rs.getInt("id");
    String name = rs.getString("name");
    int age = rs.getInt("age");
    String gender = rs.getString("gender");
}

6、释放资源

使用Connection.close()方法关闭连接,如:

if (rs != null) {
    rs.close();
}
if (stmt != null) {
    stmt.close();
}
if (conn != null) {
    conn.close();
}

八、JDBC连接数据库步骤

JDBC连接数据库的步骤如下:

1、加载数据库驱动

通过Class.forName()方法加载数据库驱动,例如MySQL的驱动为com.mysql.jdbc.Driver,可以使用如下代码加载MySQL数据库驱动:

Class.forName("com.mysql.jdbc.Driver");

2、创建数据库连接

连接数据库需要指定数据库的URL、用户名和密码,例如:

String url = "jdbc:mysql://localhost:3306/test";
String user = "root";
String password = "123456";
Connection conn = DriverManager.getConnection(url, user, password);

3、创建Statement对象

创建Statement对象可以执行SQL语句并返回结果集。例如:

Statement stmt = conn.createStatement();
String sql = "select * from user";
ResultSet rs = stmt.executeQuery(sql);
JDBC工具类的封装与使用

2023-05-17
重学java笔记,java笔记总结

2022-11-23
js常用代码工具封装类整理,java常用工具类封装

本文目录一览: 1、前端基本功:JS(十一)动画封装(CSS样式获取、JSON遍历) 2、.JS有哪些框架 3、如何实现JS的封装和JS封装的好处 4、js代码如何封装 5、新手请教,如何将一段JS代

2023-12-08
java笔记,大学java笔记

2022-11-28
Mac笔记:在日常生活中高效实用的笔记工具

2023-05-18
印象笔记记录java学习(Java成长笔记)

2022-11-12
java笔记,尚硅谷java笔记

2022-12-01
java方法整理笔记(java总结)

2022-11-08
发篇java复习笔记(java课程笔记)

2022-11-09
java通用日志工具类,java的日志类

2022-11-20
jsp程序开发学习笔记2,jsp程序设计题库

本文目录一览: 1、《JSP&Servlet学习笔记》pdf下载在线阅读,求百度网盘云资源 2、林信良编著jsp&servlet学习笔记第2版课后答案吗 3、jsp有没有快速掌握的办法呀? 4、要学J

2023-12-08
java学习的一些基础笔记(java初学笔记)

2022-11-14
java学习笔记(java初学笔记)

2022-11-14
封装mysql数据库连接类(mysql 封装)

2022-11-15
java笔试题分类总结,java面试题及答案整理

2022-11-16
Redis工具类封装

2023-05-19
java封装类,java封装类的过程

2023-01-03
Java工程师必备:MySQL JDBC驱动安装与使用

2023-05-11
python的用法笔记本(笔记本学python)

2022-11-16
javascript如何封装自己的js插件(js 工具类封装

本文目录一览: 1、如何用javascript写个插件 2、怎样用原生JS封装自己需要的插件 3、封装一个自己的js库 4、JS方法写好了 用JS写的脚本 然后我想封装JS如何封装? 如何用javas

2023-12-08