Java 数据库处理类优化

    技术2022-05-20  38

    通过连接池提取数据,下面的数据库处理类,应如何优化好呐?


     

    package com.util; import java.sql.*; import javax.naming.Context; import javax.naming.InitialContext; import javax.sql.DataSource; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; /**  *  *  */ public class DbManager {     private Connection conn;     private Statement stmt;     private static final Log logger = LogFactory.getLog(DbManager.class);     public DbManager() {         createConnection();     }     public void createConnection() {         try {             Context ctx = new InitialContext();             DataSource ds = (DataSource) ctx.lookup("java:/MySqlDS");             conn = ds.getConnection();         } catch (Exception e) {             e.printStackTrace();         }     }     /** 传入查询数据库的sql语句,返回ResultSet,注意使用完ResultSet后关闭。      *      * @param sql      * @return 返回结果集      */     public ResultSet executeQuery(String sql) {         ResultSet rs = null;         if (conn == null)             createConnection();         try {             stmt = conn.createStatement();             rs = stmt.executeQuery(sql);         } catch (SQLException e) {             e.printStackTrace();             rs = null;         }         return rs;     }     /** 传入执行数据更新的语句,返回更新结果,真为成功执行(INSERT, UPDATE, or DELETE)      *      * @param sql      * @return 返回是否有结果集      */     public boolean excute(String sql) {         boolean bSuccess = true;         if (conn == null)             createConnection();         try {             stmt = conn.createStatement();             bSuccess = stmt.execute(sql);         } catch (SQLException e) {             e.printStackTrace();             bSuccess = false;         }         return bSuccess;     }             /** 返回更新行数(INSERT, UPDATE, or DELETE)      *      * @param sql      * @return 返回更新行数      */     public int excuteUpdate(String sql) {         int changedrows = 0;         if (conn == null)             createConnection();         try {             stmt = conn.createStatement();             changedrows = stmt.executeUpdate(sql);         } catch (SQLException e) {             e.printStackTrace();         }         return changedrows;     }     /** 返回结果集行数      *      * @param rs      * @return      */     public int getRowsSize(ResultSet rs) {         int size = 0;                 try{             int oPos = rs.getRow();             if(rs.last()){                 size = rs.getRow();                 rs.absolute(oPos);             }         } catch (SQLException e){             e.printStackTrace();         }                 return size;     }     /** 预编译查询,返回结果集      *      * @param sql      * @param conditions arrays      * @return ResultSet      * @throws SQLException      */ /*    public ResultSet executeQuery(String sql, Object[] obj) {         PreparedStatement pstmt = null;         ResultSet rs = null;                 if (conn == null)             createConnection();         try {             pstmt = conn.prepareStatement(sql);             for (int i = 0; i < obj.length; i++) {                 pstmt.setObject(i + 1, obj[i]);             }             rs = pstmt.executeQuery();         } catch (SQLException e) {             e.printStackTrace();             rs = null;         }                 return rs;     } */     /** 释放Connection      *      */     public void releaseConnection() {         try {             if(stmt != null)                 stmt.close();             if (conn != null)                 conn.close();         } catch (SQLException e) {             e.printStackTrace();         }     } }


    最新回复(0)