package utils;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class Jdbc_03 {
public static void main(String[] args) {
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try{
// 2 连接跨数据库
conn = util.connection();
// 设置事务提交方式
conn.setAutoCommit(false);
// 3 获取数据库对象
String sql = "select * from emp where ename like ?";
ps = conn.prepareStatement(sql);
ps.setString(1, "_A%");
// 执行sql语句
rs = ps.executeQuery();
while (rs.next()){
System.out.println(rs.getString("ename"));
}
conn.commit();
}catch(Exception e){
try {
conn.rollback();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
e.printStackTrace();
}finally {
util.close(conn, ps, rs);
}
}
}
工具类
import java.sql.*;
/**
* 构造jdbc工具类简化编程
*/
public class util {
// 将其构造方法私有化 工具类一般只能通过类名直接调用
// 为防止直接new对象 将其构造方法私有化 注意如果不写构造方法 会默认添加一个无参构造
private util(){}
// 静态代码块 在进行类加载的时候执行
static{
// 注册驱动
try {
Class.forName("com.mysql.cj.jdbc.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
// 连接数据库
// 注意这里异常必须抛出 因为如果代码出现错误则需要实现事务的回滚
public static Connection connection() throws SQLException {
return DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/zhangzhen", "root", "password");
}
// 释放资源
public static void close(Connection conn, PreparedStatement ps, ResultSet rs){
if (rs != null){
try {
rs.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
if (ps != null){
try {
ps.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
if(conn != null){
try {
conn.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
}
}