zoukankan      html  css  js  c++  java
  • JDBC

    关于JDBC
    ··· 概念:
        · JDBC是java数据库连接的一套标准规范,可以用一套API统一操作各种数据库。
    ··· 关系:
        · java.sql.*中定义的是一套接口,各大数据库厂商提供的驱动来实现这个接口,从而达到兼容。
     
    1,使用JDBC
    ··· 使用步骤:
        1,注册驱动。将驱动jar包加载到JVM,Class.forName("com.mysql.jdbc.Driver");
        2,创建连接。根据驱动创建数据库连接,DriverManager.getConnection(url, name, pwd);
        3,创建执行语句的Statement。conn.createStatement();
        4,执行SQL,获得结果。statement.execute(sql);
        5,处理结果。
        6,关闭资源。
    ··· 注意事项:
        · 从jdk5之后就不需要注册驱动了,DriverManager会自己到CLASSPATH中找驱动。
        · MySQL5的驱动是com.mysql.jdbc.Driver,MySQL6及以上是com.mysql.cj.jdbc.Driver。
        · MySQL6及以上版本的连接url中要加时区,?serverTimezone=Asia/Shanghai,否则报错。
        · 当数据库连接对象不再被引用时,也会被GC回收,但是GC回收的只是JVM内存中的连接对            象资源,而连接对象所关联的系统资源是不能被GC回收的,所以必须调用close()方法来关            闭系统资源。对于mysql数据库,在JVM退出后socket断开,服务器端会关闭数据库连接。
     
    2,Statement
    ··· 作用:由数据库连接创建,用来执行SQL语句。
    ··· 实例方法:
        · executeQuery(sql):用来执行查询语句,select。返回ResultSet类型的结果。
        · executeUpdate(sql):用来执行更新语句,insert、update和delete。并返回影响的行数。
        · execute(sql):可以执行上面两种类型语句,如果是select返回true。不推荐使用。
    ··· PreparedStatement:
        · 预编译的Statement,可以完全避免SQL注入。推荐使用。
        · 先编写SQL语句,并用?作为占位符;预编译后,再通过setObject()设置?占位符的传参数。
     
    3,ResultSet
    ··· 作用:select语句返回的结果集类型。
    ··· 注意事项:
        · getObject(String name);是根据select中列的别名来获取数据。
        · 当调用ResultSet的close()方法后,不能再调用next()方法访问其中的数据。
     
    4,JDBC控制事务
    ··· 概念:MySQL默认自动提交事务,即每条语句就是一个事务。 
    ··· 使用步骤:
        1,将connection的自动提交设为false。conn.setAutoCommit(false);
        2,手动提交事务。conn.commit();
        3,如果异常就回滚。conn.rollback();
     
    5,DBCP数据库连接池
    ··· 作用:解决建立数据库连接需要消耗很多资源和时间的问题,可以提高性能。
    ··· DBCP:
        · 准备:commons-pool.jar、commons-dbcp.jar;配置文件:dbcp.properties。
        · 使用步骤:
            1,加载配置文件:properties.load("dbcp.properties");
            2,初始化DataSource:BasicDataSourceFactory.createDataSource(properties);
            3,获得Connection:dataSource.getConnection();
    ··· 注意事项:
        · 自定义数据库连接池要实现javax.sql.DataSource接口。
     
    6,DBUtils
    ··· 作用:DBUtils是数据库操作实用工具,封装了对JDBC的操作。类似于ORM框架。
    ··· 优点:
        · 对于数据表读操作,可以把结果转换为List,Array,Set等java集合,方便操作。
        · 对于写操作也变得简单,只需要写SQL。
        · 可以通过数据库连接池来优化性能(连接复用)。
    ··· 三个核心对象:QueryRunner类,ResultSetHandler接口,DBUtils类。
    ··· QueryRunner:
        · 作用:提供对sql语句操作的API。导入commons-dbutils.jar
        · 例子:QueryRunner queryRunner = new QueryRunner(dataSource);
        · query():用来执行select操作。
        · update():用来执行insert,update,delete操作。
        · batch():批操作。
    ··· ResultSetHandler:
        · 作用:用于select操作后,怎么封装结果集。
        · 例子:Cat cat = queryRunner.query(sql, new BeanListHandler<>(Cat.class));
    ··· DBUtils:
        · 作用:工具类,用来关闭资源,与事务的处理的方法。
  • 相关阅读:
    主机访问虚拟机ORACLE报错:ORA-12541: TNS:no listener解决办法&无法启动oracle listener服务解决办法
    C—杨辉三角
    C—水仙花数
    C—数组的转置
    C—完数
    C—判断素数
    C—斐波那契数列[生兔子问题]
    C—9*9乘法表
    eclipse常用快捷键(windows下)
    inline-block和text-indent在IE6,IE7下同时使用的兼容问题解决方法
  • 原文地址:https://www.cnblogs.com/shendeng23/p/12466504.html
Copyright © 2011-2022 走看看