package com.gink.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
/*与数据库协作的类*/
public class DBUtil {
// 单例模式
private DBUtil() {
}
private static DBUtil dbutil;
public static synchronized DBUtil getInstance() {
if (null == dbutil) {
dbutil = new DBUtil();
}
return dbutil;
}
private String dbtype;
private String dbhost;
private String dbport;
private String dbname;
private String dbusername;
private String dbpassword;
static Connection connection = null;
static Statement statement = null;
static ResultSet resultSet = null;
private void getConnection() throws ClassNotFoundException,
SQLException {
Properties prop = new Properties();
try {
prop.load(getClass().getClassLoader().getResourceAsStream(
"db.property"));
dbtype = prop.getProperty("dbtype");
dbhost = prop.getProperty("dbhost");
dbport = prop.getProperty("dbport");
dbname = prop.getProperty("dbname");
dbusername = prop.getProperty("dbusername");
dbpassword = prop.getProperty("dbpassword");
connection = createConnection();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private Connection createConnection() throws ClassNotFoundException,
SQLException {
Connection conn = null;
if ("mysql".equals(dbtype)) {
Class.forName("com.mysql.jdbc.Driver");
// 拼接数据库url
StringBuffer s = new StringBuffer("jdbc:mysql://");
s.append(dbhost);
s.append(":");
s.append(dbport);
s.append("/");
s.append(dbname);
//System.out.println(s.toString());
conn = DriverManager.getConnection(s.toString(), dbusername,
dbpassword);
}
if ("oracle".equals(dbtype)) {
Class.forName("oracle.jdbc.driver.OracleDriver");
// 拼接数据库url
StringBuffer s = new StringBuffer("jdbc:oracle:thin:@");
s.append(dbhost);
s.append(":");
s.append(dbport);
s.append(":");
s.append(dbname);
conn = DriverManager.getConnection(s.toString(), dbusername,
dbpassword);
}
if ("sqlserver".equals(dbtype)) {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
// 拼接数据库url
StringBuffer s = new StringBuffer("jdbc:sqlserver://");
s.append(dbhost);
s.append(":");
s.append(dbport);
s.append("; DatabaseName=");
s.append(dbname);
conn = DriverManager.getConnection(s.toString(), dbusername,
dbpassword);
}
if ("mysql".equals(dbtype)) {
// 其他数据库的连接语法
}
return conn;
}
public int executeUpdate(String sql, Object[] params)
throws ClassNotFoundException, SQLException {
// TODO Auto-generated method stub此函数实现增删改功能
getConnection();
java.sql.PreparedStatement preparedStatement = connection
.prepareStatement(sql);
if (params != null) {
for (int i = 0; i < params.length; i++) {
preparedStatement.setObject(i + 1, params[i]);
}
}
int Ginkreturn = preparedStatement.executeUpdate();
return Ginkreturn;
}
public ResultSet executeQuery(String sql)
throws ClassNotFoundException, SQLException {
// TODO Auto-generated method stub此函数重点实现查的功能
getConnection();
statement = connection.createStatement();
resultSet = statement.executeQuery(sql);
return resultSet;
}
public void closeAll() throws SQLException {
// TODO Auto-generated method stub
if (resultSet != null) {
resultSet.close();
}
if (statement != null) {
statement.close();
}
if (connection != null) {
connection.close();
}
}
}
xml配置部分:
dbtype=mysql
dbhost=localhost
dbport=3306
dbname=mysql
dbusername=Gink
dbpassword=Gink