第一种方式
这种方式注册的驱动数据最原始的方式,不常用
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();
}
}
}