zoukankan      html  css  js  c++  java
  • JDBC第一课-简介及开发第一个JDBC程序

    简介:

             jdbc: java语言操作数据库的技术.[实际是操作某些对象的方法]

            JDBC: 一套Java访问数据库的接口,通用访问接口,可以访问任何关系型数据库(Oracle MySQL DB2 ...)

    常用API讲解

    常见接口:

    java.sql.Connection: 数据库连接,只有获得connection对象,才连接上数据库.

    java.sql.PreparedStatement: 发送sql语句的工具, 具备发送sql的功能(方法)

    java.sql.ResultSet: 结果集: 接收数据库执行查询sql返回的查询结果.

    java.sql.Driver: 驱动类: 访问数据库的不同方式, 不同的数据库会自动提供具体的接口实现类.

    java.sql.DriverManager: 管理多个驱动.

    核心编程思想

    假如有一个需求: 向 t_person 表添加一条数据?

    先创建好t_person表:

    create table t_person(
           id number(10) primary key,
           name varchar2(50),
           sex number(1),
           age number(3),
           mobile varchar2(11),
           address varchar2(200)
    );

    JDBC访问数据库的步骤

    1. 数据库客户端访问数据库的步骤

      ① 连接数据库 用户名 密码

      ② 打开发送sql语句的工具(窗口)

      ③ 准备sql语句, 发送sql语句.

      ④ 如果发送的查询select语句, 接收数据库的查询结果.

      ⑤ 释放数据库资源: 接收查询结果 发送sql工具关闭 数据连接断开.【原则:后打开的先关闭】

    2. JDBC访问数据库的步骤【重点】

      ① 连接数据库 [获得数据库连接 Connection], 用户名 密码

      ② 创建sql发送的工具 [PreparedStatement]

      ③ 准备sql语句, 执行发送.PreparedStatement中executeXxxx()方法

      ④ 如果发送的查询select语句,接收查询结果 [ResultSet]

      ⑤ 释放资源: ResultSet PreparedStatement Connection


      了解步骤之后,我们来开发第一个JDBC案例【java代码实现】

      还是那个需求需求: 向 t_person表添加一条数据?

      insert into t_person values(100,'张三',1,18,'15533334898','河南郑州');

      思路图如下: 

      JDBC操作步骤:正式开始之前,先把Oracle的驱动jar包导入项目中。

          ojdbc?.jar: 存放是oracle提供的jdbc接口的实现类和功能代码.
          版本: ojdbc5(jdk5)   ojdbc6(jdk6)    ojdbc14(jdk1.4)
          
          操作: 
          ① 将jar拷贝在项目中.   项目--右键--new--folder--命令 lib, 将jar拷贝在当前目录.
          ② 将jar导入classpath中,   jar--右键---buildpath--add to buildpath

      下面是开发步骤【重点】 

      // 1. 加载驱动
      Class.forName("oracle.jdbc.OracleDriver");
      // 2. 获得数据库连接 connection
      /* DriverManager.getConnection("url","user","password");
       * url: jdbc远程访问oracle的路径. 固定: jdbc:oracle:thin:@数据库的ip地址:1521:xe[企业版把xe换成orcl]
       */
      Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe", "hr", "hr");
      // 3. 创建发送sql的工具 PreparedStatement
      // conn.prepareStatement("sql语句");
      String sql = "insert into t_person values(101,'张三',1,20,'12345678911','河南郑州')";// sql结尾不能有分号.
      PreparedStatement pstm = conn.prepareStatement(sql);
      // 4. 准备sql,发送sql
      // executeUpdate(): 用来发送增删改sql语句, 返回值int代表数据库影响的数据行数.
      pstm.executeUpdate();
      // 5. 如果是查询,接收查询结果,并处理.【下面会有专门处理结果集的代码演示】
      // 6. 释放资源. ResultSet PreparedStatement Connection 先打开的后关闭.
      if (pstm != null) pstm.close();
      if (conn != null) conn.close();  

      ResultSet结果集

      需求: 查询id为100的person信息?

      select id,name,sex,age,mobile,address from t_person where id = 100;

      ResultSet

      结果集, 存放查询结果.[存放查询语句执行后的结果,列名显示的select指定列名,未必是表的列名]

      发送查询语句:

      //发送查询的sql,将Oracle返回的查询结果,封装在ResultSet对象中返回,.
      PreparedStatement executeQuery();//发送查询语句,返回值就是ResultSet.

      方法:

      1. next() 移动resultSet的游标,下移一位, 并且通过返回值确定当前行是否有数据.

      2. getXxxx("查询结果列名")---获得rs游标指向的当前行, 列名对应的数据.

      3. getXxxx(列序号)---获得rs游标指向的当前行,列序号对应的数据。

      //1.加载驱动
      Class.forName("oracle.jdbc.OracleDriver");
      //2.获得数据库连接 --Connection
      Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","hr","hr");
      //3.准备发送SQL的工具--PreparedStatement
      String sql = "select id,name,sex,mobile from t_person";
      PreparedStatement pstm = conn.prepareStatement(sql);
      //4.发送SQL--executeQuery()
      ResultSet rs = pstm.executeQuery();
      //5.处理结果集--ResultSet
      while(rs.next()){
          int id  = rs.getInt("id");
          String name = rs.getString("name");
          int sex = rs.getInt(3);
          String mobile = rs.getString(4);
          System.out.println("[id:"+id+",name:"+name+",sex:"+sex+",mobile:"+mobile+"]");
      }
      //6.关闭资源
      if(rs != null) rs.close();
      if(pstm != null) pstm.close();
      if(conn != null) conn.close()

      最后是一些JDBC方法整理:

      DriverManager: //管理驱动
          Class.forName("oracle.jdbc.OracleDriver")    //管理驱动
          getConnection(url,user,password); //获得Connection对象[url user password]
      Connection: 代表数据库连接.
          prepareStatement(sql语句)  //创建发送sql的工具
          close() //关闭conn资源
      PreparedStatement 发送sql的工具
          executeUpdate() //发送sql语句,返回值int,数据库影响数据条数.
      ResultSet ?
          next() 移动resultSet的游标,下移一位, 并且通过返回值确定当前行是否有数据.
          getXxxx("查询结果列名")---获得rs游标指向的当前行, 列名对应的数据.
          getXxxx(列序号)---获得rs游标指向的当前行,列序号对应的数据.
      ​
      
  • 相关阅读:
    linux file命令小记
    利用actionscript访问wfs服务
    在C/C++中static有什么用途?(请至少说明两种)
    单元测试、集成测试、系统测试的侧重点是什么?
    测试计划工作的目的是什么?测试计划文档的内容应该包括什么?其中哪些是最重要的?
    简述什么是静态测试、动态测试、黑盒测试、白盒测试、α测试 β测试
    一台客户端有三百个客户与三百个客户端有三百个客户对服务器施压,有什么区别?
    BUG管理工具的跟踪过程(用BugZilla为例子)
    软件测试分为几个阶段 各阶段的测试策略和要求是什么?
    软件质量保证体系是什么 国家标准中与质量保证管理相关的几个标准是什么?他们的编号和全称是什么?
  • 原文地址:https://www.cnblogs.com/chenpeisong/p/9775225.html
Copyright © 2011-2022 走看看