在使用jdbc的时候,会面临同一串代码重复书写多次的情况,例如常量的编写,加载驱动,链接数据库,关闭资源。这四个每写一次jdbc就会重新书写一次,所以我们将他们封装到方法里面,帮助简化代码量。
//JDBC驱动信息(类的全类名)
public static final String DRIVER = "com.mysql.cj.jdbc.Driver";
//连接数据库的地址信息
public static final String URL = "jdbc:mysql://localhost:3306/****?serverTimezone=UTC";
//连接数数据的账号信息
public static final String USER = "root";
//连接数数据的密码信息
public static final String PASSWORD = "****";
public static Connection getConnection(){
Connection conn = null;
try {
//1、加载驱动
Class.forName(DRIVER);
// 2、链接数据库
conn = DriverManager.getConnection(URL,USER,PASSWORD);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
return conn;
}
//关闭资源
public static void Close(ResultSet rs, Connection conn, PreparedStatement ps){
if (rs!=null){
try {
rs.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
if (conn != null){
try {
conn.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
if (ps!=null){
try {
ps.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
}
这个样子,当我们使用jdbc的时候,就可以通过调用这些方法来进行书写啦!
但是在进行增删改的时候,他们除了有不同的sql语句和不同的对sql语句进行传参,剩下的几乎一致,所以,我们将增删改也封装到方法里面:
public boolean addUpdateDelete(String s,Object ... args){
Connection conn = jdbc_util.getConnection();
boolean flag = false;
PreparedStatement ps = null;
try {
ps = conn.prepareStatement(s);
for (int i = 0; i < args.length; i++) {
ps.setObject(i+1,args[i]);
}
int r= ps.executeUpdate();
if (r!=0){
flag = true;
}
} catch (SQLException throwables) {
throwables.printStackTrace();
}finally {
jdbc_util.Close(null,conn,ps);
}
return flag;
}