这段代码的作用public String[] queryBySql(String sql, int nLimit, Object...vals) throws SQLException { if (nLimit > 0) sql = addLimit(sql, nLimit); log.debug(sql); lastSql = sql; Connection conn = getConnection(); String[] arRes = null; int nRecord = 0; List<String> listRes = new ArrayList<String>(); try { PreparedStatement stmt = conn.prepareStatement(sql);//ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); for (int i=0; vals!=null && i<vals.length; i++) { stmt.setObject(i+1, vals[i]); log.debug(vals[i]); } ResultSet rs = stmt.executeQuery(); int nCol = rs.getMetaData().getColumnCount(); while(rs.next()) { for (int x=0; x<nCol; x++) { listRes.add(rs.getString(x+1)); } nRecord++; } rs.close(); stmt.close(); } catch (SQLException e) { log.error(e.getMessage() +" : "+ sql);//e.printStackTrace(); if (!isConnValid(conn)) throw e; } finally { if (bPool) // close and re-get from pool conn.close(); } if (listRes.size() > 0) { listRes.add(String.format("%d", nRecord)); // put number of records at tail arRes = listRes.toArray(new String[listRes.size()]); } return arRes; }
时间: 2024-04-23 09:25:04 浏览: 92
自己写java数据库连接池.docx
这段代码是一个查询数据库的方法,接收一个 SQL 语句和一些参数值,并返回一个字符串数组。如果限制了返回结果的数量,它会在 SQL 语句中添加相应的限制。它首先获取一个数据库连接,然后使用 PreparedStatement 对象执行 SQL 查询,将查询结果存储在一个字符串列表中,最后将列表转换为字符串数组并返回。如果连接是从连接池中获取的,则在方法返回之前将连接关闭。如果发生 SQLException 异常并且连接无效,则抛出该异常。在方法执行过程中,记录 SQL 语句和参数值以进行调试。
阅读全文