package www.csdn.net.news.util;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;
public class JdbcUtil {
private static Connection conn;
private static PreparedStatement pstmt;
private static ResultSet rs;
private JdbcUtil() {
super();
// TODO Auto-generated constructor stub
}
// 连接数据库的操作
public static Connection getConn() {
if (conn == null) {
// 加载属性配置文件
// 创建属性对象
Properties prop = new Properties();
try {
// 加载指定名称的属性文件
prop.load(JdbcUtil.class.getClassLoader().getResourceAsStream(
"jdbc.properties"));
try {
// 根据文件的名称查找类文件
Class.forName(prop.getProperty("driver"));
// 创建连接对象
try {
conn = DriverManager.getConnection(
prop.getProperty("url"),
prop.getProperty("user"),
prop.getProperty("pass"));
System.out.println("连接数据库连接成功");
} catch (SQLException e) {
// TODO Auto-generated catch block
System.out.println("连接数据库失败");
e.printStackTrace();
}
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
System.out
.println("没有" + prop.getProperty("driver") + "文件");
e.printStackTrace();
}
} catch (IOException e) {
// TODO Auto-generated catch block
System.out.println("属性文件加载出错");
e.printStackTrace();
}
}
return conn;
}
public static void release(ResultSet rs, PreparedStatement pstmt) {
// 释放结果集
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
// 释放准备语句
if (pstmt != null) {
try {
pstmt.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
// 更新数据的操作增,删,改要用到的封装方法
public static boolean upDate(String sql, Object[] obj) {
boolean flag = false;
try {
// 准备语句的创建,带有sql命令的对象
pstmt = getConn().prepareStatement(sql);
for (int i = 1; i <= obj.length; i++) {
pstmt.setObject(i, obj[i - 1]);
}
int i = pstmt.executeUpdate();
if (i > 0) {
flag = true;
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
release(rs, pstmt);
}
return flag;
}
// 进行批量删除处理
public static boolean updateBatchDel(String sql, Integer[] ids) {
boolean flag = false;
Connection conn = getConn();
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
conn.setAutoCommit(false);
pstmt = conn.prepareStatement(sql);
for (int i = 0; i < ids.length; i++) {
pstmt.setInt(1, ids[i]);
System.out.println(sql + "---------------" + ids[i]);
pstmt.addBatch();
}
int[] num = pstmt.executeBatch(); // 批量执行
for (int i = 0; i < num.length; i++) {
if (num[i] == 0) {
try {
conn.rollback(); // 进行事务回滚
return flag;
} catch (SQLException ex) {
ex.printStackTrace();
}
}
}
conn.commit();// 提交事务
flag = true;
} catch (SQLException e) {
e.printStackTrace();
} finally {
release(rs, pstmt);
}
return flag;
}
// 根据传入的表的名称,和每页数据得到传入表的所有的页数
// tableName:::::操作的数据表名称
// pagesize::::::每页显示的信息条数
// conn::::::::::XXXXDaoImpl中的连接对象
// pstmt::::::::XXXXDaoImpl中的预处理对象
// rs:::::::::::XXXXDaoImpl中的集合
public static Integer getCountPage(String tableName, Integer pagesize,
Connection conn, PreparedStatement pstmt, ResultSet rs) {
Integer countPage = 0;
String sql = "select count(*) as c from " + tableName;
conn = JdbcUtil.getConn();
try {
pstmt = conn.prepareStatement(sql);
rs = pstmt.executeQuery();
if (rs.next()) {
int countRecord = rs.getInt("c");
countPage = countRecord % pagesize == 0 ? countRecord
/ pagesize : countRecord / pagesize + 1;
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
JdbcUtil.release(rs, pstmt);
}
return countPage;
}
}
jdbc连接MySQL数据库的工具类
最新推荐文章于 2022-01-09 20:21:30 发布