oracle封装方法
来源:互联网 发布:淘客cms系统是什么 编辑:程序博客网 时间:2024/05/29 14:25
为了连接oracle数据库的方便性,写了一个工具类,每次需要对数据库的操作时,只要调用该类,写好连接数据库的语句即可,这里是对整个需要访问数据库进行了封装。
package com.yc.api.jdbc.util;import java.io.InputStream;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.ResultSetMetaData;import java.sql.SQLException;import java.sql.Statement;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import java.util.Properties;import javax.sql.DataSource;import org.apache.commons.dbcp2.BasicDataSourceFactory;import org.apache.logging.log4j.LogManager;public class DBHelper { private static DataSource dataSource; static { try { //Class.forName(DRIVER_CLASS_NAME); // 1.加载驱动 Properties props = new Properties(); props.load(DBHelper.class.getClassLoader().getResourceAsStream("db.properties")); //使用连接池技术, 数据源DBCP dataSource = BasicDataSourceFactory.createDataSource(props); LogManager.getLogger().debug("加载数据库属性元素构建数据源成功..."); } catch (Exception e) { LogManager.getLogger().error("加载数据库属性元素构建数据源!!!", e); } } /** * 建立连接 * * @return */ public static Connection getConn() { Connection con = null; try { // 2.建立与数据库的 连接 //使用连接池技术, 数据源DBCP con = dataSource.getConnection(); LogManager.getLogger().debug("数据库连接成功..."); } catch (Exception e) { LogManager.getLogger().error("数据库连接失败!!!", e); } return con; } /** * 关闭操作 * * @param con * 数据库连接 * @param st * sql执行工具 * @param rs * 返回结果集 */ public static void close(Connection con, Statement st, ResultSet rs) { if (rs != null) { try { rs.close(); LogManager.getLogger().debug("关闭结果集完成..."); } catch (SQLException e) { LogManager.getLogger().error("关闭结果集失败!!!", e); } } if (st != null) { try { st.close(); LogManager.getLogger().debug("关闭执行工具完成..."); } catch (SQLException e) { LogManager.getLogger().error("关闭执行工具失败!!!", e); } } if (con != null) { try { con.close(); LogManager.getLogger().debug("关闭数据库连接完成..."); } catch (SQLException e) { LogManager.getLogger().error("关闭数据库连接失败!!!", e); } } } /** * * @param sql * 要执行的sql语句 insert, update, delete) * @param params * 执行sql语句需要的参数 * @return 执行sql语句受影响的行数 */ public static int doUpdate(String sql, Object... params) { Connection con = null; PreparedStatement st = null; int result = 0; try { con = getConn(); LogManager.getLogger().debug("要执行sql语句:" + sql); st = con.prepareStatement(sql); setParams(st, params); // 设置参数 LogManager.getLogger().debug("sql执行工具创建成功..."); } catch (SQLException e) { LogManager.getLogger().error("sql执行工具创建失败!!!", e); } try { result = st.executeUpdate(); // 执行sql , 针对insert, delete, // update, 返回结果是受影响行数 LogManager.getLogger().debug("插入数据成功,插入数据的条数是::" + result); } catch (SQLException e) { LogManager.getLogger().error("插入数据失败!!!", e); }finally{ // 5.关闭连接 DBHelper.close(con, st, null); } return result; } /** * * @param sql 要执行的sql语句 * @param objs 执行sql语句需要的参数 * @return 取出数据库的数据,每一条记录是一个map : key是字段名或字段别名(小写字母), value应对字段的值 */ public static List<Map<String, Object>> doQuery(String sql, Object...objs){ Connection con = null; PreparedStatement st = null; ResultSet rs = null; List<Map<String, Object>> results = null; try { con = getConn(); st = con.prepareStatement(sql); // 3.sql执行工具 setParams(st, objs); LogManager.getLogger().debug("sql执行工具创建成功..."); } catch (SQLException e) { LogManager.getLogger().error("sql执行工具创建失败!!!", e); } try { rs = st.executeQuery(); // 4.执行sql取到返回数据白结果集 LogManager.getLogger().debug("执行sql取到返回数据成功..."); } catch (SQLException e) { LogManager.getLogger().error("执行sql取到返回数据失败!!!", e); } try { ResultSetMetaData rsmd = rs.getMetaData(); // 元数据; 对象取取到的结果集数据的描述 int cloumCount = rsmd.getColumnCount(); results = new ArrayList<Map<String, Object>>(); while (rs.next()) { // 判断结果集是否还有数据 (数据是一条记录的方式取出) Map<String, Object> record = new HashMap<String, Object>(); for (int i = 1; i <= cloumCount; i++) { //rsmd.getColumnName(i) :表的字段名或字段别名 //rs.getObject(i) : 取到字段对应的值 record.put(rsmd.getColumnName(i).toLowerCase(), rs.getObject(i)); } results.add(record); } LogManager.getLogger().debug("取出结果集数据完成..."); } catch (SQLException e) { LogManager.getLogger().error("取出结果集数据失败!!!", e); } finally { DBHelper.close(con, st, rs); } return results; } /** * * @param sql 要执行的sql语句 * @param objs 执行sql语句需要的参数 * @return 取出数据库的数据, key是字段名或字段别名(小写字母), value应对字段的值 */ public static Map<String, Object> doQueryOne(String sql, Object...objs){ Connection con = null; PreparedStatement st = null; ResultSet rs = null; Map<String, Object> results = null; try { con = getConn(); st = con.prepareStatement(sql); // 3.sql执行工具 setParams(st, objs); LogManager.getLogger().debug("sql执行工具创建成功..."); } catch (SQLException e) { LogManager.getLogger().error("sql执行工具创建失败!!!", e); } try { rs = st.executeQuery(); // 4.执行sql取到返回数据白结果集 LogManager.getLogger().debug("执行sql取到返回数据成功..."); } catch (SQLException e) { LogManager.getLogger().error("执行sql取到返回数据失败!!!", e); } try { ResultSetMetaData rsmd = rs.getMetaData(); // 元数据; 对象取取到的结果集数据的描述 int cloumCount = rsmd.getColumnCount(); if (rs.next()) { // 判断结果集是否还有数据 (数据是一条记录的方式取出) results = new HashMap<String, Object>(); for (int i = 1; i <= cloumCount; i++) { //rsmd.getColumnName(i) :表的字段名或字段别名 //rs.getObject(i) : 取到字段对应的值 results.put(rsmd.getColumnName(i).toLowerCase(), rs.getObject(i)); } } LogManager.getLogger().debug("取出结果集数据完成..."); } catch (SQLException e) { LogManager.getLogger().error("取出结果集数据失败!!!", e); } finally { DBHelper.close(con, st, rs); } return results; } private static void setParams(PreparedStatement st, Object... objs) { // 判断是否有参数 if (objs == null || objs.length == 0) { return; } int flag = 0; try { for (int i = 0; i < objs.length; i++) { flag = i + 1; String paramType = objs[i].getClass().getName(); // 获得参数的类型 if (Integer.class.getName().equals(paramType)) { // 判断是否是int类型 st.setInt(i + 1, (int) objs[i]); } else if (Double.class.getName().equals(paramType)) { // 判断是否是dobule类型 st.setDouble(i + 1, (double) objs[i]); } else if (String.class.getName().equals(paramType)) { // 判断是否是string类型 st.setString(i + 1, (String) objs[i]); } else { st.setObject(i + 1, objs[i]); } } } catch (SQLException e) { LogManager.getLogger().error(String.format("注入第%d值时失败!!!", flag),e); } }}
阅读全文
0 0
- oracle封装方法
- j2ee访问oracle数据库封装类以及调用方法
- java连接oracle数据库,自己封装的几个方法
- 封装方法
- oracle 文件操作封装
- SQL 封装 oracle
- 封装带参数的Oracle ExecuteNonQuery 方法,用OracleParameterCollection传入参数!
- C/C++封装库ocicpplib调用Oracle存储过程的方法
- Oracle常用重复建表,索引,序列,表列等通用方法封装
- 批量封装字段方法
- JDBC常用方法封装
- 接口 DLL 封装 方法
- 封装类的方法
- oci插入方法封装
- 获取缩略图封装方法
- swfupload上传方法封装
- selenium Webdriver 封装方法
- 分页的封装方法
- 学生信息系统学习心得四、学籍管理模块的创建
- html5自动弹出软键盘的方法
- idea注册码
- Leetcode 523.Continuous Subarray Sum
- 在线web代码编辑器的制作
- oracle封装方法
- JVM调优方法
- [MSSQL]SQL查询结果转换成HTML并通过邮件预警
- @RequestParam @RequestBody @PathVariable 等参数绑定注解详解
- C#基础-036 类的继承
- mysql随笔(一)------基础知识
- 汽车轮胎代码意义
- Spring bean 的生命周期
- C++继承方式