zoukankan      html  css  js  c++  java
  • JDBC的API介绍

    JDBC的API介绍

    1.JDBC的简单使用

      a.注册数据库驱动

      b.获取数据库连接

        获取连接的方式:1.通过DriverManger

                2.通过 DataSource

                   * Mybatis框架提供了DataSourceFactory使用工厂模式用来创建数据源

                  * JDBC API提供了DataSource两个比较重要的扩展  

                    1.ConnectionPoolDataSource  支持缓存和复用Connection对象,能够很大程度上提升性能和伸缩性

                    2.该实例返回的Connection对象能够支持分布式事务

      c.执行sql语句

        获取到Connection对象后,可以创建 1.statement接口  2.preparedStatement  3.CallableStatement

        Statement接口中定义了执行SQL语句的方法。这些方法不支持参数输入。PrepareStatement接口增加了设置SQL参数的方法。CallableStatement方法继承自PreparedStatement。再次基础上增加了调用存储过程以及检索存储过程调用结果的方法

        操作数据库的案例:

        

    @Test
    public void testJdbc() {
        // 初始化数据
        DbUtils.initData();
        try {
            // 创建DataSource实例
            DataSource dataSource = new UnpooledDataSource("org.hsqldb.jdbcDriver",
                    "jdbc:hsqldb:mem:mybatis", "sa", "");
            // 获取Connection对象
            Connection connection = dataSource.getConnection();
            Statement statement = connection.createStatement();
            ResultSet resultSet = statement.executeQuery("select * from user");
            // 遍历ResultSet
            ResultSetMetaData metaData = resultSet.getMetaData();
            int columCount = metaData.getColumnCount();
            while (resultSet.next()) {
                for (int i = 1; i <= columCount; i++) {
                    String columName = metaData.getColumnName(i);
                    String columVal = resultSet.getString(columName);
                    System.out.println(columName + ":" + columVal);
                }
                System.out.println("---------------------------------------");
            }
            // 关闭连接
            IOUtils.closeQuietly(statement);
            IOUtils.closeQuietly(connection);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    View Code

      d.处理Sql执行结果

      e.释放连接

     2.JDBC中的API

      1.JavaSQL包中API : 1.数据类型接口14种 、2.枚举类型、3.驱动类型、4.异常类

        重要的api:Connection、Statement、CallableStatement、PreparedStatement、DatabaseMetaData、ParameterMetaData、ResultSet、ResultSetMetaData、Wrapper

        Connection、Statement、ResultSet等接口都继承自Wrapper接口。这些接口都提供了对JDBC驱动类型的原始访问能力

        Wrapper提供了如下两个方法:

        •  <T> T unwrap(java.lang.Class<T> iface) throws java.sql.SQLException;   用于返回未经过包装的JDBC驱动的原始类型实例
        • boolean isWrapperFor(java.lang.Class<?> iface) throws java.sql.SQLException;   用于判断当前实例是否是JDBC驱动的某一个类型的包装类

      2.Connection:

      a.DriverManger:类通过Driver接口为JDBC客户端管理一组可用驱动程序实现,当客户端通过DriverManager类和数据库建立连接时,DriverManager类会根据getConnection的url找到对应的驱动实现类

      主要用于获取数据库连接和注册数据库驱动。常用方法:

        

    registerDriver(java.sql.Driver driver)
    getConnection(String url)
    getConnection(String url,String user, String password)
    getConnection(String url,java.util.Properties info) 
    

      b.DataSource接口:DataSource获取Connection的一种方式,必须包含一个无参数的构造方法

      UnpooledDataSource    PooledDataSource

     c.DriverAction接口:用于监听驱动类被解决注册的时间,是驱动提供者需要注意的范畴

     d.connection关闭:close()    isClose();

     3.Statement

      Statement接口中定义了执行SQL语句的方法。这些方法不支持参数输入。PrepareStatement接口增加了设置SQL参数的方法。CallableStatement方法继承自PreparedStatement。再次基础上增加了调用存储过程以及检索存储过程调用结果的方法

      

      4.ResultSet :执行的结果集,resultSet没有关闭时,对它的影响,会直接影响数据库

       resultset游标:ResultSet对象中维护了一个游标,游标指向当前数据行。当ResultSet对象第一次创建时, 游标指向数据的第一行。ResultSet接口中提供了一系列的方法,用于操作ResultSet对象中的游标

        a.游标可操作方式:1.默认类型 TYPE_FORWARD_ONLY:ResultSet不可滚动,游标只可向前移动。从第一行到最后一行。不允许向后移动,即只能使用resultSet接口的next()方法。

                2.TYPE_SCOROLL_INSENSITIVE游标可移动,可向前或者向后移动

       b.ResultSet并行性 :

      • CONCUR_READ_ONLY:表示只能从resultset对象中读取数据
      • CONCUR_UPDATABLE:表示既能从resultset中读取数据,又能更新数据

      c.ResultSet可保持性

      •       HOLD+CURSORS_OVER_COMMIT:当调用Connection对象的commit方法时,不关闭当前事务调用的resultset对象
      •       CLOSE_CURSORS_AT_COMMIT:当前事务创建的ResultSet对象,在事务提交后,会被关闭。对一些应用来说,能够提高系统系统

      d.ResultSet关闭:

      1. 调用ResultSet对象进行显示的关闭
      2. Collection对象被关闭
      3. 隐士关闭:1.相同的statement对象执行  2.可保持性设置为CLOSE_CURSORS_AT_COMMIT的

      5.DataBaseMetaData:用于提供底层数据源相关信息。该接口主要用于应用程序或者工具如何与底层数据源进行交互。该接口是由JDBC提供程序实现的

      对象创建:connection.getMetaData()

      接口作用:

        1.获取数据源信息

        2.确定数据源是否支持某一个特性或者功能

        3.获取数据源的限制

        4.确定数据源包含哪些SQL对象以及这些对象的属性  

        5.获取数据源对事物的支持

    3.JDBC的事务

      何时开启一个事务是由JDBC提供程序决定的。或者数据库隐士决定的事务提交可通过connection.setAutoCommit设置是否手动提交

      隔离级别:事务隔离级别用于指定事务中对数据的操作对其他事务的可见性。不同的事务隔离级别能够解决不同的事务并发问题,与效率有关。Connection对象的默认事务隔离级别是由数据库驱动实现的。事务隔离级别可能造成的问题:脏读、不可重复读、幻读。

      事务的保存点:保存点通过在事务中标记1个中间的点来对事务进行更细粒度的控制,一旦设置保存点,事务就可以回滚到保存点,而不影响保存点之前的操作。DatabaseMetaData接口 提供了supportsSavepoints()方法,用于判断JDBC驱动是否支持保存点。

  • 相关阅读:
    iOS中Zbar二维码扫描的使用
    SOJ 1135. 飞跃原野
    SOJ 1048.Inverso
    SOJ 1219. 新红黑树
    SOJ 1171. The Game of Efil
    SOJ 1180. Pasting Strings
    1215. 脱离地牢
    1317. Sudoku
    SOJ 1119. Factstone Benchmark
    soj 1099. Packing Passengers
  • 原文地址:https://www.cnblogs.com/yingxiaocao/p/13671311.html
Copyright © 2011-2022 走看看