Skip to content

第一种方式

这种方式注册的驱动数据最原始的方式,不常用

java
Statement stmt = null;
Connection conn = null;
try {
    // 1、注册驱动
    DriverManager.registerDriver(new Driver());
    // 2、获取连接
    conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/bjpowernode", "root", "123456");
    System.out.println(conn);
    // 3、获取数据库操作对象
    // 这个方法创建的对象,是专门用来指定 sql 语句的
    stmt = conn.createStatement();
    // 4、执行 sql
    String sql1 = "insert into t_student(id, name, class) VALUE (9, '张三', 3)";
    // 这个方法用于执行 DML 语句(insert,update,delete),并且返回值是影响数据库中记录条数
    int count = stmt.executeUpdate(sql1);
    System.out.println(count);
    // 5、处理查询结果集
} catch (SQLException e) {
    throw new RuntimeException(e);
} finally {
    // 6、释放资源
    // 在这里确保数据内容一定要关闭
    if (stmt != null) {
        try {
            stmt.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
    if (conn != null) {
        try {
            conn.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

获取连接的第二种方式

在JDBC的Driver中静态代码快中已经写好了实现类,使用反射进行静态代码块的调用,完成连接的获取

这种方式更加常用

java
try {
    // 使用反射机制运行这个类中的静态代码块,完成对应内容的获取
    /*
        Mysql的JDBC中的Driver的静态代码块
        static {
            try {
                java.sql.DriverManager.registerDriver(new Driver());
            } catch (SQLException E) {
                throw new RuntimeException("Can't register driver!");
            }
        }
     */
    Class.forName("com.mysql.cj.jdbc.Driver");
    Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/bjpowernode", "root", "123456");
} catch (ClassNotFoundException | SQLException e) {
    e.printStackTrace();
}

获取连接的最终版

以上连接的方式都是基于代码量的减少,为了让代码更灵活,往往会将需要配置的内容放到一个配置文件中,通过读取配置文件获取对应要操作的内容

这种方式更加灵活,也更加常用

java
// 使用 资源绑定器 获取配置文件中的内容
ResourceBundle bundle = ResourceBundle.getBundle("JDBCTest04");
String className = bundle.getString("className");
String url = bundle.getString("url");
String user = bundle.getString("user");
String password = bundle.getString("password");
String sql = bundle.getString("sql");
Connection conn = null;
Statement stmt = null;

try {
    // 注册驱动
    Class.forName(className);
    conn = DriverManager.getConnection(url, user, password);
    // 获取数据操作对象
    stmt = conn.createStatement();
    // 执行 sql 语句
    int count = stmt.executeUpdate(sql);
    System.out.println(count);
} catch (ClassNotFoundException | SQLException e) {
    e.printStackTrace();
} finally {
    // 关闭连接
    if (stmt != null) {
        try {
            stmt.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    if (conn != null) {
        try {
            conn.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

本站除转载文章或特殊说明外,均遵循 CC BY-SA 4.0 协议发布。