A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 哥.兜裡有煙 中级黑马   /  2017-12-3 18:24  /  1107 人查看  /  0 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 哥.兜裡有煙 于 2017-12-3 18:28 编辑

【JDBC的概述】
  • JDBC:Java DataBase Connectivity Java数据库的连接.
  • 是SUN公司统一提供的一套接口规范(JDBC).各个数据库生产商提供实现.
  • 驱动:两个硬件设备之间通信的桥梁.
【JDBC的开发步骤】
  • 注册驱动:
  • 获得连接:
  • 获得执行SQL语句对象:
  • 释放资源:
JDBC的API: DriverManager java.sql
Connection:连接. java.sql   
       * 获得连接.   
       * 执行事务的管理.
Statement: java.sql   
       * 执行SQL语句.      
             * int executeUpdate(String sql);      
             * ResultSet executeQuery(String sql);      
             * boolean execute(String sql);
ResultSet: java.sql   
       * getXXX(int idx),getXXX(String name);
连接池:
  • javax.sql
  • 自定义连接池:(了解)
  • 增强一个类中的某个方法有几种方式:
    • 继承:
      • 控制控制这个类的构造.
    • 装饰者模式:
      • 增强的类和被增强类实现相同的接口.
      • 在增强类中获得被增强的类引用.
      • 接口中方法过多,增强其中一个方法,其他方法都要重写.
    • 动态代理:
      • 被增强的类实现了接口即可.
      • 编写代码的时候麻烦.

  • DBCP:
  • C3P0:
DbUtils:工具类:
  • 使用DBUtils完成CRUD的操作 ```
C3P0改造后的工具类public class JDBCUtils {
        private static final ComboPooledDataSource DATA_SOURCE =new ComboPooledDataSource();
        /**
         * 获得连接的方法
         */
        public static Connection getConnection(){
            Connection conn = null;
            try {
                conn = DATA_SOURCE.getConnection();
            } catch (Exception e) {
                e.printStackTrace();
            }
            return conn;
        }
        
        public static DataSource getDataSource(){
            return DATA_SOURCE;
        }
        
        /**
         * 释放资源的方法
         */
        public static void release(ResultSet rs,Statement stmt,Connection conn){
            if (rs != null) {
                try {
                    rs.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
                // 垃圾回收尽快回收对象.
                rs = null;
            }
            if (stmt != null) {
                try {
                    stmt.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
                // 垃圾回收尽快回收对象.
                stmt = null;
            }
            if (conn != null) {
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
                // 垃圾回收尽快回收对象.
                conn = null;
            }
        }
        
        public static void release(Statement stmt,Connection conn){
            if (stmt != null) {
                try {
                    stmt.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
                // 垃圾回收尽快回收对象.
                stmt = null;
            }
            if (conn != null) {
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
                // 垃圾回收尽快回收对象.
                conn = null;
            }
        }
        /**
         * 元数据提取
         * @param sql
         * @param obj
         * @return
         * @throws SQLException
         */
        public static int  updata(String sql ,Object...obj) throws SQLException {
            Connection conn = DATA_SOURCE.getConnection();
            PreparedStatement stmt = conn.prepareStatement(sql);
            int count =stmt.getParameterMetaData().getParameterCount();
            
            for (int i = 0; i < count; i++) {
                stmt.setObject(i+1, obj);
            }
            int result = stmt.executeUpdate();
            release(stmt, conn);
            
            return result;
        }
    }

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马