作者:sundroid
個人站點:sundroid.cn 郵箱: [email protected] 微博:http://weibo.com/Sundroid
在平時開發中,數據庫連接是常有的事,但是我們應該都知道將配置信息寫在config.properties裏面那麼當數據庫遷移後也無需修改代碼,同時這裏也優化了線程,不會發生由於數據庫連接數較多時的連接異常問題,減輕數據庫連接的壓力。
package com.sundroid.utils.db;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import com.sundroid.utils.common.PropertiesUtils;
public class JdbcUtil {
private static ThreadLocal<Connection> tl = new ThreadLocal<Connection>();
public static java.sql.Connection getConnection() {
Connection conn = null;
PropertiesUtils.loadFile("jdbc.properties");
String url = PropertiesUtils.getPropertyValue("url");
String UserName = PropertiesUtils.getPropertyValue("username");
String Password = PropertiesUtils.getPropertyValue("password");
try {
Class.forName(PropertiesUtils.getPropertyValue("driverClassName"));
conn = DriverManager.getConnection(url, UserName, Password);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return conn;
}
public static void beginTransaction() throws SQLException {
Connection con = tl.get();
if (con != null)
throw new SQLException("開啓事務異常");
con = getConnection();
con.setAutoCommit(false);
tl.set(con);
}
public static void commitTransaction() throws SQLException {
Connection con = tl.get();
if (con == null)
throw new SQLException("提交事務異常");
con.commit();
con.close();
con = null;
tl.remove();
}
public static void rollbackTransaction() throws SQLException {
Connection con = tl.get();
if (con == null)
throw new SQLException("回滾事務異常");
con.rollback();
con.close();
con = null;
tl.remove();
}
public static void releaseConnection(Connection connection)
throws SQLException {
Connection con = tl.get();
if (connection != con) {
if (connection != null && !connection.isClosed()) {
connection.close();
}
}
}
public static void main(String[] args) {
System.out.println(getConnection());
}
}
package com.sundroid.utils.common;
import java.io.IOException;
import java.util.Properties;
public class PropertiesUtils {
static Properties prop = new Properties();
public static boolean loadFile(String fileName) {
try {
prop.load(PropertiesUtils.class.getClassLoader()
.getResourceAsStream(fileName));
} catch (IOException e) {
e.printStackTrace();
return false;
}
return true;
}
public static String getPropertyValue(String key) {
return prop.getProperty(key);
}
public static void main(String[] args) {
PropertiesUtils.loadFile("jdbc.properties");
String URL = PropertiesUtils.getPropertyValue("url");
System.out.println(URL);
}
}
下面是配置文件,這裏用得是oracle文件,如果是mysql 只需要在配置文件裏修改相應信息(driverClassName、url)
driverClassName=oracle.jdbc.driver.OracleDriver
url=jdbc:oracle:thin:@***.***.***.***:1521:orcl
username=******
password=******