zoukankan      html  css  js  c++  java
  • JDBC

    1.早年间有个ODBC,基于C语言的接口

      1.和数据交互
      2.查看结构,数据,和信息
      3.链接数据库的一个标准

    2.jdbc:Java版本的ODBC

      jdbc的开发源于在jdk定义了一系列的接口用于开发:jdbc API {应用开发人员,驱动开发人员}

      每一个数据库的驱动,都是对jdbc规范的不同实现

      jdbc规范出来了一系列接口,数据库驱动的开发人员实现了这些接口,应用开发人员调用的是实现接口的方法

      不同版本的驱动对应不同版本的jdk

      驱动中最关键的就是对java.sql.sqlDrive接口的实现(类)

      Java原生api中只是定义了接口(方法),而数据库厂商实现了这些接口方法,我们使用的就是这些接口实现类的方法

    3.jdbc的驱动有四种实现类型
      jdkapi中的一部分
       |
      jdbc规范 接口
      有不同的实现方式
      不同的驱动类型(4种)
      1.jdbc->odbc桥
      2.nativeApi(数据库提供的接口,但是需要数据库厂商提供的接口)
      3.jdbcNet(通过网络服务器)
      4.本地协议,基于socket【常用的】

    4.小结下内容

      Java application
        |
      jdbc server manager(jdbc驱动管理者)【JavaApi中的辅助类,可以用,可以不用】
        |
      jar包中对接口的实现(四种实现类型)

    URI唯一表示
    URL唯一表示且定位

    5.jdbc的开发过程  

      注册驱动实际上,只要加载到驱动类,这个类中的静态代码就会自动的向DriverManager驱动管理器加载驱动

      所以说有三种基本的方式用来注册驱动:
      1.Class.forName(str);
      2.Driver driver=new oracle.jdbc.driver.OracleDriver();
      3.System.setProperty("jdbc.drivers", "oracle.jdbc.driver.OracleDriver");
      -Djdbc.drivers=oracle.jdbc.driver.OracleDriver//第三种方式的变形,采用虚拟机传参的方式

      1. 注册一个驱动【加载驱动类(为了注册驱动)】
        Class.forName(str);
      2. 建立到数据库的连接
        Connection conn=DriverManager.getConnection();
      3. 创建一个声明
        conn.createStatement();//处理普通的SQL语句

        conn.prepareCall(String sqlStr);//处理存储过程

        conn.prepareStatement(String sqlStr);//处理同构的SQL语句

      4. 执行SQL

        execute();DML,DDL(动态执行SQL语句时常用),有结果集需要处理返回true,没有结果集返回false,存储过程的执行可用

        executeQuery();DQL

        executeUpdata();DML

        executeBatch(); 执行批处理

      5. 处理结果
        ResultSet rs = stmt.executeQuery(sql);
        // 处理结果集(select)
        while (rs.next()) {
          int id=rs.getInt(1);//通过序列号(从1开始)
          String name=rs.getString("name");//通过列名
          int age=rs.getInt(3);
          System.out.println(id+name+age);
        }
      6. 关闭JDBC对象
        // 关闭资源
        if (stmt != null)
          stmt.close();
        if (conn != null)
          conn.close();
        if(rs!=null) {
          rs.close();
        }

    6.Statement 父接口:执行SQL语句,每次给Statement 一个SQL语句,Statement会把SQL语句带给数据库

    7.preparedstatement 子接口:预处理同构的SQL语句

    eg:

      insert into t_user(id,name,salary) values(?,?,?)
      把这个有占位符的同构的SQL语句,发给数据库,以后每次替换?的值就可以了

    8.CallableStatement 针对于存储过程

    eg:

      CallableStatement cstm =connection.prepareCall(sqlString);

      CallabeStatement cstm = null;
      try{

        cstm = connection.prepareCall( “ {call return_student(?, ?)} ” );
        cstm.setString(1, “ 8613034 ” );
        cstm.registerOutParameter(2, Types.REAL);
        cstm.execute();
        float gpa = cstm.getFloat(2);

      }catch(SQLException e){

      }

    注:oracle.jdbc.OracleDriver继承了oracle.jdbc.driver.OracleDriver

    有的jar包不用加载驱动(自动默认加载)ojdbc5
    有的jar包需要加载驱动(手动加载)ojdbc14

    9.executeBatch();批处理:
      String sql1 = "insert into s_student(id,name,age) values(2,'tom',20)";
      String sql2 = "delete from s_student where id<3";
      stmt.addBatch(sql1);
      stmt.addBatch(sql2);
      int[] executeBatch = stmt.executeBatch();

      String sql = "insert into s_student(id,name,age) values(?,?,?)";
      ps = conn.prepareStatement(sql);
      // 执行SQL语句
      for (int i = 3; i < 10; i++) {
        ps.setInt(1, i);
        ps.setString(2, "tom");
        ps.setInt(3, 20);
        ps.addBatch();
      }
      ps.executeBatch();

    10.日期处理

    statement插入日期

    sysdate
      sysdate-365
    to_date('字符串','指定的日期格式')
      to_date('01-11-19','dd-mm-yy')
    默认的日期格式
      '05-3月-16'

    stmt处理日期
      SimpleDateFormat sdf=new SimpleDateFormat('dd-mm-yy');
      String str= sdf.format(date);

    ps处理日期
      Date date=new Date();
      long time=date.getTime();
      ps.setInt(1,1);
      ps.setString(2,"tom1");
      ps.setDate(3,new java.sql.Date(time));

    时间戳time:long数字

    11.事务:
      设为手动提交事务:
      conn.setAutoCommit(false);
      {.........}
      conn.commit();
      closs方法会帮助我们提交事务

      如果有异常:
      在try-catch中
      conn.rollback();

    12.版本控制:
      管理开发过程中用到的各种资料,软件,文档,代码
      保存/追踪历史版本的记录

     

  • 相关阅读:
    利用API对OWLS描述的服务进行操作 转贴
    转arcgis server部署 自己安装的体会
    最后一次的温柔
    JUDDI安装完整版 (转帖W3CHINA)
    jUDDI安装总结
    Protege中安装owls editor、graphviz插件
    改完了开题报告 舒口气
    服务组合的QoS信息
    owls editor
    一、性能测试术语
  • 原文地址:https://www.cnblogs.com/Magic-Li/p/12783072.html
Copyright © 2011-2022 走看看