在数据库的调用中,我们会大量重复使用增删查改的代码,这使我们的代码存在大量冗余,使用通用数据库辅助类DButil可以帮助我们减少重复代码,且在不同的项目中,都可以直接调用。
package com.student.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
//通用的数据操作方法
public class DButil {
private final String url ="jdbc:mysql://localhost/stu_test"; //在使用时,需要提前建立相应的数据库
private final String username = "root"; //数据库名称,一般为root
private final String password = "123456"; //数据库密码,自己设定的
//static可以使该方法被其他类访问。
private static Connection conn =null;
private static PreparedStatement psm = null;
private static ResultSet rs = null;
//通用的增、删、改 。返回结果为成功(true)或者失败(false)
public boolean executeUpdate(String sql,Object[] params){
try {
Class.forName("com.mysql.jdbc.Driver"); //显示声明
conn = DriverManager.getConnection(url, username, password); //连接数据库
//由于sql语句中的数据类型不一致,所以我们使用Object 类来存放。Object[] obs = {}来代替sql语句中的????
psm = conn.prepareStatement(sql);
//判断是否为空,排除空指针异常错误。
if(params!=null){
//使用for循环来插入sql语句中的?
for(int i=0;i<params.length;i++){
psm.setObject(i+1, params[i]);
}
}
//使用result来接收executeUpdate的值,不为0则表示操作成功! 为0则表示操作失败!
int result = psm.executeUpdate(); //executeUpdate()的返回值为int型
if(result >0){
return true;
}else return false;
//抛出异常
}catch(ClassNotFoundException e){
e.printStackTrace();
return false;
}catch(SQLException e){
e.printStackTrace();
return false;
}catch(Exception e){
e.printStackTrace();
return false;
}
//最后一定要记住关闭连接。
finally{
try {
if(psm!=null)psm.close(); //判断是否为空,不为空则关闭连接
if(conn!=null)conn.close(); //判断是否为空,不为空则关闭连接
} catch (SQLException e) { //抛出异常
e.printStackTrace();
}
}
}
//通用的查询操作
//由于查询操作ResultSet 后续操作与特定数据库数据绑定,所以查询操作只能进行到ResultSet ,且不能关闭连接,否则在调用的时候就无法取出数据。只能在其他类调用完成后关闭连接。
public ResultSet executeQuery(String sql,Object[] params) {
try {
Class.forName("com.mysql.jdbc.Driver"); //显示声明
conn = DriverManager.getConnection(url, username, password); //连接数据库
psm = conn.prepareStatement(sql);
//判断是否为空,排除空指针异常
if(params!=null){
//使用for循环来插入sql语句中的?
for(int i=0;i<params.length;i++){
psm.setObject(i+1, params[i]);
}
}
rs = psm.executeQuery();
//抛出异常
}catch(ClassNotFoundException e){
e.printStackTrace();
}catch(SQLException e){
e.printStackTrace();
}catch(Exception e){
e.printStackTrace();
}
return rs;
}
}