编写一个用于读取数据库中表信息的JDBC程序

一、要求

1. 请编写一个用于读取数据库中users表信息的JDBC程序,要求分别获取字段id、name、password和email字段的值。

2. 请按照以下要求设计实现PreparedStatement对象的相关批处理操作。

要求如下:

①指定所要执行的SQL语句如下:

String sql = "INSERT INTO users(name,password) VALUES(?,?)";

②编写JDBCUtils工具类,类中要包含获取连接和释放资源的方法。

③编写Example02类,要求在类中使用JDBCUtils工具类获取连接和释放资源,并使用PreparedStatement对象批量添加5条记录。

二、实现

1. Example01.java

import java.sql.*;

public class Example01 {
    public static void main(String[] args) throws SQLException {
        // 1. 注册数据库的驱动
        DriverManager.registerDriver(new com.mysql.jdbc.Driver());
        // 2.通过DriverManager获取数据库连接
        String url = "jdbc:mysql://localhost:3306/jdbc";
        //*代表自己电脑 MySQL的账户名及密码
        String username = "*****";
        String password = "*****";
        Connection conn = DriverManager.getConnection(url, username, password);
        // 3.通过Connection对象获取Statement对象
        Statement stmt = conn.createStatement();
        // 4.使用Statement执行SQL语句。
        String sql = "select * from users";
        ResultSet rs = stmt.executeQuery(sql);
        // 5. 操作ResultSet结果集
        System.out.println("id | name   | password | email  |");
        while (rs.next()) {
            int id = rs.getInt("id"); // 通过列名获取指定字段的值
            String name = rs.getString("name");
            String psw = rs.getString("password");
            String email = rs.getString("email");
            System.out.println(id + " | " + name + " | " + psw + " | " + email);
        }
        // 6.回收数据库资源
        rs.close();
        stmt.close();
        conn.close();
    }
}

2. JDBCUtil.java

import java.sql.*;

public class JDBCUtils {
    // 加载驱动,并建立数据库连接
    public static Connection getConnection() throws SQLException, ClassNotFoundException {
        DriverManager.registerDriver(new com.mysql.jdbc.Driver());
        String url = "jdbc:mysql://localhost:3306/jdbc";
        //*代表自己电脑 MySQL的账户名及密码
        String username = "*****";
        String password = "*****";
        Connection conn = DriverManager.getConnection(url, username, password);
        return conn;
    }

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

    public static void release(ResultSet rs, Statement stmt, Connection conn) {
        if (rs != null) {
            try {
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
            rs = null;
        }
        release(stmt, conn);
    }
}

3. Example02.java

import java.sql.Connection;
import java.sql.PreparedStatement;

public class Example02 {
    public static void main(String[] args) {
        Connection conn = null;
        PreparedStatement preStmt = null;
        try {
            // 加载并注册数据库驱动
            conn = JDBCUtils.getConnection();
            String sql = "INSERT INTO users(name,password)VALUES(?,?)";
            preStmt = conn.prepareStatement(sql);
            for (int i = 0; i < 5; i++) {
                preStmt.setString(1, "name2" + i);
                preStmt.setString(2, "password2" + i);
                preStmt.addBatch();
            }
            preStmt.executeBatch();
        } catch (Exception e) {
            e.printStackTrace();
        } finally { // 释放资源
            JDBCUtils.release(null, preStmt, conn);
        }
    }
}

版权声明:本文为qq_57342311原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。