/**
* JDBC数据库操作工具类:通过配置文件读取数据库连接信息,统一释放资源,通过查询和更新sql语句
*
* @author zhukang
*
*/
public class JdbcUtil {
/**
* 通过外部配置文件,读取数据库配置信息,实现动态配置,将配置和代码进行解耦
*/
public static Connection getConnection() throws Exception {
// 通过properties属性文件读取配置
// 1 定义一个属性文件对象
Properties properties = new Properties();
// 2 使用反射机制,通过类加载器读取配置文件,返回一个输入流对象
InputStream is = JdbcUtil.class.getClassLoader().getResourceAsStream("jdbc.properties");
// 3 将流对象转为属性对象
properties.load(is);
// 4 读取配置
String driverClass = properties.getProperty("driverClass");
String jdbcUrl = properties.getProperty("jdbcUrl");
String user = properties.getProperty("user");
String password = properties.getProperty("password");
// 加载驱动
Class.forName(driverClass);
// 返回数据库连接对象
return DriverManager.getConnection(jdbcUrl, user, password);
}
/**
* 统一释放数据库连接资源
*/
public static void releaseJdbc(ResultSet rs, Statement stmt, Connection conn) {
try {
if (null != rs) {
rs.close();
}
if (null != stmt) {
stmt.close();
}
if (null != conn) {
conn.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 增删改的通用方法,只需要动态传入SQL语句,多个参数即可,注意,传入参数顺序要跟sql中的?对应
*/
public static int update(String sql, Object ... params) {
// 初始化数据库操作对象
Connection conn = null;
PreparedStatement pstmt = null;
// 影响行数
int row = 0;
try {
// 获取连接
conn = getConnection();
// 获取预处理SQL对象:必须带入预编译sql
pstmt = conn.prepareStatement(sql);
// 动态传入参数
int index = 1;
// jdk8写法
// Arrays.stream(params).forEach(param -> {
// pstmt.setObjec t(index++, param);
// });
// 普通写法
for (int i = 0; i < params.length; i++) {
pstmt.setObject(i+1, params[i]);
}
// 直接执行sql,不需要参数
row = pstmt.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
} finally {
releaseJdbc(null, pstmt, conn);
}
return row;
}
/**
* 登录查询操作
*/
public static Boolean select(String sql,Object ... params ){
Connection con = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
boolean flag = false;
try {
con = getConnection();
pstmt = con.prepareStatement(sql);
for (int i = 0; i < params.length; i++) {
pstmt.setObject(i+1, params[i]);
}
// flag = pstmt.execute();
rs = pstmt.executeQuery();
if(rs.next()){
System.out.println(pstmt.toString());
flag = true;
}
} catch (Exception e) {
// TODO Auto-generated catch block
releaseJdbc(rs, pstmt, con);
e.printStackTrace();
}
return flag;
}
}
JdbcUtil连接数据库,定义工具类
最新推荐文章于 2022-05-13 15:26:46 发布