彭老師幫看下我自己封裝了個JDBC的通用查詢,更新函式有沒有什麼問題。
函式功能實現通用的增刪改查,這個是第一版,還需要加的功能很多,希望把問題在萌芽階段就找出來。
public class DBJdbcRunners { private static Log log = LogFactory.getLog(DBJdbcRunners.class); private boolean autoCommit; Connection connection = null; public DBJdbcRunners()throws SQLException{ autoCommit = true; try { connection = DBUtils.getConnection(); } catch (SQLException e) { throw new SQLException(); } } public void begintx()throws SQLException{ autoCommit = false; if (connection != null){ try { connection.setAutoCommit(false); } catch (SQLException e) { throw new SQLException(); } } } public void committx()throws SQLException{ autoCommit = false; if (connection != null){ try { connection.commit(); connection.setAutoCommit(true); autoCommit = true; } catch (SQLException e) { log.equals("committx exception is ->["+e+"]"); throw new SQLException(); }finally{ DBUtils.closeConnection(connection); } } } public int executeUpdate (String sql) throws SQLException, InputIllegalException { Statement statement = null; try { statement = connection.createStatement(); int i = statement.executeUpdate(sql); return i; }catch( SQLException e){ log.error("error sql is-->["+sql+"]"); log.error(e); if(!autoCommit){ try{ connection.rollback(); }catch(SQLException ex){ log.error(ex); } } throw new SQLException(); } finally{ DBUtils.closeStatement(statement); if(autoCommit){ DBUtils.closeConnection(connection); } } } public void executeQuery ( String sql,boolean isgetTotalNum) throws SQLException,InputIllegalException{ Statement statement = null; PreparedStatement p_statement = null; ResultSet rs = null; if(sql == null){ throw new InputIllegalException("in executeQuery function" + "sql is null"); } try{ if(isgetTotalNum){ statement = connection.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); }else{ statement = connection.createStatement(); } rs = statement.executeQuery(sql); if(isgetTotalNum){ rs.last(); log.debug("total row num is-->["+rs.getRow()+"]"); rs.first(); } ResultSetMetaData rsmd = rs.getMetaData(); int numCols = rsmd.getColumnCount(); log.debug("column num is-->["+rsmd.getColumnCount()+"]"); while(rs.next()){ for(int i=1;i<=numCols;i++){ System.out.print("column "+i+" is-->["+rs.getString(i)+"]"); } System.out.print("\n"); } }catch( SQLException e){ log.error("error sql is-->["+sql+"]"); log.error("[ex in executeQuery function]-->["+e+"]"); if(!autoCommit){ try{ if(log.isDebugEnabled()){ log.debug("[in executeQuery function rollback]"); } connection.rollback(); }catch(SQLException ex){ log.error(ex); } } throw new SQLException(); } finally{ DBUtils.closeResultSet(rs); DBUtils.closeStatement(statement); if(autoCommit){ DBUtils.closeConnection(connection); } } } } <p class="indent"> |
相關文章
- 誰能幫我看下哪裡有問題?
- 新組裝臺式裝完系統後 File:\Boot\BCD 有沒有懂的朋友幫忙看下boot
- 大神幫我看個C函式的問題函式
- JSONP 通用函式封裝JSON函式封裝
- 曾經有個能幫我修電腦的程式設計師,我沒有好好珍惜……程式設計師
- 自己做的一個簡歷網頁,有很多bug解決不了,有沒有大神幫我看看網頁
- 測試同行詢問問題,也是最近自己開展的事情, 怎麼幫 ,幫什麼程度
- 為什麼IT培訓機構的老師自己不去工作?沒有在公司繼續做技術?
- 老師說不懂就要問,我有個疑惑想請教各位
- 為什麼 Python 沒有函式過載?如何用裝飾器實現函式過載?Python函式
- 錄屏為什麼沒有聲音?解決這個問題可簡單了!
- 分析競價推廣為什麼有訪問沒有諮詢KMK
- IDC商怎麼搭建一個自己的線上網站,有沒有什麼好的工具網站
- 剛剛有個群友問我,為什麼我的子執行緒更新了 UI 沒報錯?藉此,糾正一些Android 程式設計師的一個知識誤區執行緒UIAndroid程式設計師
- 那些年我封裝的 JS 函式封裝JS函式
- 查詢某欄位有特殊字元(PATINDEX函式)字元Index函式
- 有沒有通用的SSL證書
- 好久沒有更新日誌了
- 靜態成員函式-this指標沒有指的是沒有給,而不是不能擁有,可以自己給呀函式指標
- 為什麼我沒有收到贈送的流量
- [記錄] 通用封裝函式——四則運算封裝函式
- 函式宣告與函式表示式有什麼區別?函式
- 初學者疑惑:C語言中,函式反覆呼叫會有什麼問題?C語言函式
- 面試官,我會寫二分查詢法了!對,沒有 bug 的那種!面試
- 為什麼中國人沒有自己的程式語言?
- 求求有沒有沒睡的大佬幫忙改改
- 為什麼react-redux沒有更新hooks APIReactReduxHookAPI
- [譯] React 中的 Immutability:可變物件並沒有什麼問題React物件
- https和http有什麼區別?看下面介紹就知道了!HTTP
- python怎麼封裝函式Python封裝函式
- 快遞物流查詢API有什麼作用?API
- MySQL函式查詢目錄樹問題記錄MySql函式
- [需求建議]你好,請問官方 什麼時候出 TP5 版本的 onethink ? 好久沒有更新了
- 封裝一個通用的PopupWindow封裝
- 「碼農讀書」:我們並沒有自己想象的那麼理性
- 報表為什麼會沒完沒了?怎麼解決這個問題?
- 面試的反殺-你有沒有想要問我的面試
- 連表操作、子查詢、pymysql 模組、sql注入問題(感覺已沒有)MySql
- 掘金 AMA:我是閒魚客戶端架構師 — 宗心,你有什麼問題想問我嗎?客戶端架構