使用预处理PreparedStatement执行Sql语句
2014-11-06 15:26
225 查看
/** * 使用预处理的方式执行Sql * @param sql Sql语句 * @param obj 变量值数组 * @return 查询结果 * @throws SQLException */ public List<Map<String, Object>> query(String sql, Object[] obj) throws SQLException { List<Map<String, Object>> ret = null; PreparedStatement ps = null; ResultSet rs = null; try { log.debug("start sql="+sql); ps = conn.prepareStatement(sql); if(obj != null && obj.length > 0){ for (int i = 0, len = obj.length; i < len; i++) { ps.setObject(i + 1, obj[i]); log.debug("parameterValue: " + obj[i]); } } rs = ps.executeQuery(); ResultSetMetaData rmd = rs.getMetaData(); ret = new ArrayList<Map<String,Object>>(); while (rs.next()) { Map<String, Object> rowMap = new LinkedHashMap<String, Object>(); for (int i = 1, count = rmd.getColumnCount() + 1; i < count; i++) { rowMap.put(rmd.getColumnName(i), rs.getObject(i)); } ret.add(rowMap); } } catch (SQLException e) { log.debug("执行sql语句失败,sql: " + sql + "," + e.getMessage()); throw e; } finally { if (rs != null) { try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } } if (ps != null) { try { ps.close(); } catch (SQLException e) { e.printStackTrace(); } } } return ret; }
相关文章推荐
- 安卓开发SQlite使用执行SQL语句一些简单的处理——1.创建数据库,表和添加数据
- 安卓开发SQlite使用执行SQL语句一些简单的处理——2.查询数据库的数据
- 在ASP中使用SQL语句之5:开始执行
- 在MySQL数据库中使用C执行SQL语句
- 无法在SQL 2005系统数据库中执行的T-SQL语句(XML处理)
- 无法在SQL 2005系统数据库中执行的T-SQL语句(XML处理)
- 无法在SQL 2005系统数据库中执行的T-SQL语句(XML处理)
- [转] 在 MySQL 数据库中使用 C 执行 SQL语句
- 无法在SQL 2005系统数据库中执行的T-SQL语句(XML处理)
- 无法在SQL 2005系统数据库中执行的T-SQL语句(XML处理)
- [引]SQL帮助文档:使用 WAITFOR 使SQL语句停顿后执行
- 无法在SQL 2005系统数据库中执行的T-SQL语句(XML处理)
- [推建]MSSQL2000中OSQL工具的使用[执行T-sql语句]
- [转] 在 MySQL 数据库中使用 C 执行 SQL语句
- 使用SQL语句来进行分页处理
- 使用Job的SQL语句为多个Job调度执行顺序
- 在ASP中使用SQL语句:开始执行
- 发现个东东,使用MS-SQL Server ISQL在命令行上执行SQL语句
- 无法在SQL 2005系统数据库中执行的T-SQL语句(XML处理)
- [转] 在 MySQL 数据库中使用 C 执行 SQL语句