源码如下(DBUtil.java):
import java.io.IOException;
import java.io.InputStream;import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Connection;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Properties;
public class DBUtil {
private String url = null;//初始化操作
private String driver = null;
private String user = null;
private String pass = null;
private Properties prop = null;
private InputStream in = null;
private ResultSet result = null;
private Connection conn = null;
private PreparedStatement ps = null;
private ResultSetMetaData resultData = null;
{
try{
//从配置文件读取数据库配置信息
prop = new Properties();}catch(Exception e){
in = DBUtil.class.getClassLoader().getResourceAsStream("dbinfo.properties");
prop.load(in);
driver = prop.getProperty("driver");
url = prop.getProperty("url");
user = prop.getProperty("user");
pass = prop.getProperty("pass");
//加载驱动
Class.forName(driver);
e.printStackTrace();}finally{
try{
in.close();}catch(IOException e1){
e1.printStackTrace();}
}
}
//带参数查询操作
public ArrayList<Object[]> ExecuteQuery(String sql,String[] parameters){
ArrayList<Object[]> arrayList = new ArrayList();try{
conn = getConnection();
ps = conn.prepareStatement(sql);
if(parameters != null){
for(int i = 0; i < parameters.length;i++){
ps.setString(i+1, parameters[i]);
}}
result = ps.executeQuery();
resultData = result.getMetaData();
int columnCount = resultData.getColumnCount();
while(result.next()){
Object[] object = new Object[columnCount];
for(int i = 0;i < object.length;i++){
object[i] = result.getObject(i+1);
}
arrayList.add(object);
}}catch(SQLException e3){
System.out.println("SQL预编译出错");}finally{
e3.printStackTrace();
this.close(result, conn, ps);}
return arrayList;}
//用于执行DDL和DML语句,执行DDL语句后返回0,执行DML后返回受影响的行数
public boolean ExecuteUpdate(String sql,String[] parameters){
boolean b = false; //判断是否执行成功try{
conn = getConnection();
ps = conn.prepareStatement(sql);
if(parameters != null){
for(int i = 0;i < parameters.length;i++){
ps.setObject(i+1, parameters[i]);
}
}
else{
System.out.println("参数为空!!!");
}
int j = ps.executeUpdate();}catch(SQLException e4){
if(j != 0){
b = true;
}
e4.printStackTrace();}finally{
this.close(result, conn, ps);}
return b;}
//获取数据库连接
public Connection getConnection(){
try{
conn = DriverManager.getConnection(url,user,pass);}catch(SQLException e2){
System.out.println("获取数据库连接失败!!!");}
e2.printStackTrace();
return conn;}
//关闭连接
public void close(ResultSet rs,Connection connection,PreparedStatement pst){
try{
if(rs != null){}catch(SQLException e3){
rs.close();
}
if(pst != null){
pst.close();
}
if(connection != null){
connection.close();
}
e3.printStackTrace();}
System.out.println("关闭资源异常!!!");
}
}
配置文件dbinfo.properties如下: