JavaWeb常用工具類:資料庫操作DataSourceUtils
阿新 • • 發佈:2019-02-06
操作資料庫,本程式碼參考的是我看的視訊。。。。
資料庫技術:c3p0 也就是說要使用這個工具類你必須引入C3p0的jar包和配置檔案
先自行百度吧我有時間就傳上來、、
直接先上程式碼:
public class DataSourceUtils { private static ComboPooledDataSource ds = new ComboPooledDataSource(); private static ThreadLocal<Connection> tl=new ThreadLocal<>(); /** * 從執行緒中獲取連線 * @return * @throws SQLException */ public static Connection getConnection() throws SQLException { //從執行緒中獲取conneciton Connection conn = tl.get(); if(conn==null){ conn=ds.getConnection(); //和當前執行緒繫結 tl.set(conn); } return conn; } // 獲取資料來源 public static DataSource getDataSource() { return ds; } // 釋放資源 public static void closeResource( Statement st, ResultSet rs) { closeResultSet(rs); closeStatement(st); } // 釋放資源 public static void closeResource(Connection conn, Statement st, ResultSet rs) { closeResource(st, rs); closeConn(conn); } // 釋放 connection public static void closeConn(Connection conn) { if (conn != null) { try { conn.close(); //和執行緒解綁 tl.remove(); } catch (SQLException e) { e.printStackTrace(); } conn = null; } } // 釋放 statement ctrl + shift + f 格式化程式碼 public static void closeStatement(Statement st) { if (st != null) { try { st.close(); } catch (SQLException e) { e.printStackTrace(); } st = null; } } // 釋放結果集 public static void closeResultSet(ResultSet rs) { if (rs != null) { try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } rs = null; } } //開啟事務 public static void startTransaction() throws SQLException{ getConnection().setAutoCommit(false); } /** * 事務提交且釋放連線 */ public static void commitAndClose(){ Connection conn = null; try { conn=getConnection(); //事務提交 conn.commit(); //關閉資源 conn.close(); //解除版定 tl.remove(); } catch (SQLException e) { e.printStackTrace(); } } /** * 事務回滾且釋放資源 */ public static void rollbackAndClose(){ Connection conn = null; try { conn=getConnection(); //事務回滾 conn.rollback(); //關閉資源 conn.close(); //解除版定 tl.remove(); } catch (SQLException e) { e.printStackTrace(); } }
}
經常使用的是獲取資料連線
使用方法:
如在Dao層實現與資料庫的互動:
//獲取連結 通過工具類 QueryRunner qr=new QueryRunner(DataSourceUtils.getDataSource()); String sql="insert into user values(?,?,?,?,?,?,?,?,?,?)"; qr.update(sql, user.getUid(),user.getUsername(),user.getPassword(), user.getName(),user.getEmail(),user.getTelephone(), user.getBirthday(),user.getSex(),user.getState(),user.getCode());
解釋: sql語句根據需求改變,返回型別也根據需求改變