提高代码的复用是当今开发的必不可少的
在java web 开发的时候,初学者在连接Mysql数据库的时候,连接的代码没有实现复用。
工具类
package com.xxy.Dao;
import java.sql.*;
public class DBUtil {
static Connection conn = null;
static PreparedStatement pstmt=null;
static ResultSet rs = null;
//通用的数据库连接代码
public static boolean execudeUpdate(String Datename,String sql,Object[] params){
//通用的增删改
//相同的不变,不相同的通过函数的调用传入数据
/*
* 1:数据库名
* 2:功能(sql语句)
* 3:参数,就是问号的值,通过数组传入 Object[] params;
*
*/
try {
Class.forName("com.mysql.cj.jdbc.Driver");
String url = "jdbc:mysql://127.0.0.1:3306/"+Datename+"?useSSL=false&serverTimezone=UTC";
conn = DriverManager.getConnection(url,"root","123456");
pstmt = conn.prepareStatement(sql);//预处理
//数组为传入的值,数组有多少个值,就有多少个问号!问号为条件
for(int i=0;i<params.length;i++){
pstmt.setObject(i+1, params[i]);//数组从0开始,数据库从1开始
}
int count=pstmt.executeUpdate();
if(count>0){
return true;
}else {
return false;
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
return false;
} catch (SQLException e) {
e.printStackTrace();
return false;
}finally {
// 关闭操作 close(),从后往前关闭
close();
}
}
public static ResultSet showDate(String Datename,String sql,Object[] params){
//通用的查询
//相同的不变,不相同的通过函数的调用传入数据
/*
* 1:数据库名
* 2:功能(sql语句)
* 3:参数,就是问号的值,通过数组传入 Object[] params;
*
*/
try {
Class.forName("com.mysql.cj.jdbc.Driver");
String url = "jdbc:mysql://127.0.0.1:3306/"+Datename+"?useSSL=false&serverTimezone=UTC";
conn = DriverManager.getConnection(url,"root","123456");
pstmt = conn.prepareStatement(sql);//预处理
//数组为传入的值,数组有多少个值,就有多少个问号!
if(params!=null){
for(int i=0;i<params.length;i++){
pstmt.setObject(i+1, params[i]);//数组从0开始,数据库从1开始
}
}
rs=pstmt.executeQuery();
return rs;
//返回的为rs,所以不能关闭,在接收这个返回值处理后实现关闭操作
} catch (ClassNotFoundException e) {
e.printStackTrace();
return null;
} catch (SQLException e) {
e.printStackTrace();
return null;
}
}
//关闭操作
public static void close(){
if(rs!=null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
rs=null;
}
if(pstmt!=null){
try {
pstmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
pstmt=null;
}
if(conn!=null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
conn=null;
}
}
//查询数据库中数据总数
public static int getTotalCount(String Datename,String sql){
ResultSet rs=null;
int sum=-1;
try {
rs=showDate(Datename, sql, null);
if(rs.next()){
sum=rs.getInt(1);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
// 关闭操作 close(),从后往前关闭
close();
}
return sum;
}
}