2022年4月1日星期五
上一篇文章讲解了一下JDBC连接MySQL数据库这篇文章将优化连接的代码主要使用了Java的面对对象特性。
不知道大家有没有发现连接和查询的代码块在程序运行中需要用到和多次而每次使用都要定义很多相同的属性调用或实现相同的方法或接口不过这样的操作会让代码产生冗余
为了解决这样的一个问题我们可以使用Java面对对象的思想定义一个公共的工具类供其他实现类调用
实现代码如下:
package cn.zjx;
import java.sql.*;
public class DBHelper(){//工具类
//定义公共的静态属性
private static String DRIVER = "com.mysql.jdbc.Driver";
private static String URL = "jdbc:mysql://127.0.0.1:3306/StudentDB";
private static String USER = "root";
private static String PASS = "root";
//定义要使用到到的对象
Connection conn = null;//连接对象
Statement st = null;//执行对象
ResultSet rt = null;//处理结果集对象
//通用连接方法
public Connection getConnection(){
try{
Class.forName(DRIVER);
conn = DriverManager.getConnection(URL,USER,PASS);
}catch(Exception e){
e.printStackTrace();//打印堆栈信息
}finally{
return conn;//返回连接对象
}
}
//通用关闭方法
public void Close(Connection conn,Statement st,ResultSet rt){
try{
//判断传入对象是否为空 为空将不做关闭操作
if(conn != null){
conn.close();
}
if(st != null){
st.close();
}
if(rt != null){
rt.close();
}
}catch(Exception e){
e.printStackTrace();//打印堆栈信息
}
}
//通用增删改
public boolean IDU(String Sql){//增删改操作只是传入的SQL语句不同
boolean ifa = false;
try{
conn = getConnection();//调用同类的连接数据库方法
st = conn.createStatement();//为执行sql语句方法赋值
int num = st.executeUpdate(sql);//接收受影响的行数
if(num>0){//对num进行判断 大于0说明操作成功
ifa = true;
}
}catch(Exception e){
e.printStackTrace();//打印堆栈信息
}finally{
return ifa;//返回boolean类型
}
}
//通用查询
public ResultSet Select(String sql){
try{
conn = getConnection();//调用同类的连接数据库方法
st = conn.createStatement();//为执行sql语句方法赋值
rs = st.executeQuery(sql);//用结果集接收
}catch(Exception e){
e.printStackTrace();//打印堆栈信息
}finally{
return rs;//返回出接收的结果集 然后处理
}
}
}
编写的是一个公共的Java连接数据库的工具类放在项目内需要调用时可以随时调用解决了代码冗余的问题减少了代码量提高了安全性可靠性和后期对程序的维护性
没有看过前一篇文章的同学可以先从前面开始
作者 胡桃の里 多多评论指出不足!