二 JDBC基本使用

一、前期准备工作

主要是下载jar

idea 在mave的pox中

eclipse

1、在根目录下新建一个lib文件夹

​ 2、把下载好的驱动复制到lib下

​ 3、添加jar包到工程中

二、基础步骤

1、加载驱动(jdk1.6可省略)

  1. 加载驱动方式一(推荐采取)
       Class.forName("com.mysql.jdbc.Driver") ;
    
  2. 加载驱动方式二
      DriverManager.registerDriver(new Driver());
    
  3. 注意:在实际开发中并不推荐采用registerDriver方法注册驱动。
    ​ 1、采用方式一的方式加载,这样不会导致驱动对象在内存中重复出现,并且采用此种方式,程序仅仅只需要一个字符串,不需要依赖具体的驱动,即不需要import相关的包,使程序的灵活性更高
    ​ 2、方式二,查看Driver的源代码可以看到,如果采用此种方式,会导致驱动程序注册两次,也就是在内存中会有两个Driver对象。程序依赖mysql的api,脱离mysql的jar包,程序将无法编译,将来程序切换底层数据库将会非常麻烦。
  4. 自动加载驱动
    JDK6之后,JDBC已经升级到4.0了
    自动加载java.sql.Driver,而不需要再调用class.forName。
    

2、建立连接

  1. mysql
    Connection connection = DriverManager
                                .getConnection("jdbc:mysql://127.0.0.1:3306/test",
                                                "root",
                                                "root");
    
  2. Oracle
    Connection connection = DriverManager
                                .getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orcl", "scott", "123456");
    
  3. 参数一URL标准语法由三部分组成:
    jdbc : 子协议 : 子名称
    jdbc   ---  协议, jdbc的协议总是jdbc
    子协议  --- 驱动程序,各种驱动程序都有不同的子协议
    子名称 即数据源的名称,是表示数据库的方法,为定位数据库提供确定的信息,每个子协议都自己的特有结构
    
  4. 常用数据库URL
  • mysql
    MySQL Connector/J Driver
    下载地址:http://central.maven.org/maven2/mysql/mysql-connector-java/5.1.43/mysql-connector-java-5.1.43.jar
    驱动程序包名:MySQL-connector-Java-x.x.xx-bin.jar
    驱动程序类名: com.mysql.jdbc.Driver
    JDBC URL: jdbc:mysql://:/
    默认端口3306,如果服务器使用默认端口则port可以省略
    MySQL Connector/J Driver 允许在URL中添加额外的连接属性
    jdbc:mysql://:/?property1=value1&property2=value2
    
  • oracle
    Oracle Thin JDBC Driver
    驱动程序包名:ojdbc6.jar
    驱动程序类名: Oracle.jdbc.driver.OracleDriver
    JDBC URL: jdbc:oracle:thin:@::
    

3、创建Statement对象

  1. 核心代码
    Statement statement = connection.createStatement();
    
  2. 说明
    创建一个Statement对象主要是调用该对象的方法执行SQL语句返回相应的结果

4、编写sql语句

  1. 示例代码
    String sql =  "SELECT * FROM EMP"
    Statement statement = connection.createStatement();
    ResultSet  rs = statement.executeQuery(sql1);
    
  2. 说明
    JDBC没执行一条SQL语句,都需要Connection对象的createStatement相关的方法来创建Statement对象, 利用Statement对象向数据库执行sql语句
  3. Statement对象常用方法(API: java.sql.Statement)
    //执行查询操作则返回结果集
    resultSet =  statement.executeQuery(sql);
    //执行增删改操作返回int值
    int count = statement.executeUpdate(sql);
    //理论上可以执行任何SQL语句,一般用来执行创建表的语句
    boolean execute = statement.execute(sql)
    if(true){//true 表示执行的查询操作返回结果集
       ResultSet resultSet = statement.getResultSet();
    }else{//false 表示执行的增删改的操作
       int updateCount = statement.getUpdateCount();
    }
    
  4. 执行DML操作(insert update delete)
    int  executeUpdate(String sql);
       //返回影响的行数
    
  5. 执行DQL操作
    ResultSet   executeQuery(String sql);
    //返回查询的对象信息
    
  6. 返回多个结果的SQL操作
    boolean execute(String sql,
                       int[] columnIndexes)
                       throws SQLException
    //如果结果为 ResultSet 对象,则返回 true;如果其为更新计数或者不存在更多结果,则返回 false
    //一般用于执行DDL操作
    
  7. 执行示例图


    二 JDBC基本使用_第1张图片
    image

5、处理结果

  1. 执行增删改返回的是本次操作影响到的记录数。
    int count = statement.executeUpdate(sql);
    
  2. 执行查询返回的结果是一个ResultSet对象。
  3. ResultSet包含符合SQL语句中条件的所有行,并且它通过一套get方法提供了对这些行中数据的访问。
  4. 使用结果集(ResultSet)对象的访问方法获取数据
    ​ 1、while()遍历结果集
    while (resultSet.next()) {
          /**
          * 获取值 有两种方式
          * 第一种 通过列名来获取
          * 第二种 通过下标索引来获取 ----根据索引下标获取值 ,效率高一点,但是维护起来不方便
          */
          resultSet.getInt(1);
          long empno = resultSet.getLong("empno");
          String ename = resultSet.getString("ENAME");
        ...
        }
    
    ​ 2、遍历结果集for()
    //遍历结果集for()
    Statement statement= conn.createStatement(sql, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
    //注意,要设置ResultSet的参数,否则默认只能.next()操作,不能往前滚动
    ResultSet rs = statement.executeQuery();
    for(rs.first();!rs.isAfterLast();rs.next()){
      String username = rs.getString("username");
      ...
    }
    
  5. ResultSet示意图


    二 JDBC基本使用_第2张图片
    image

6、关闭JDBC对象

  1. 说明
    操作完成以后要把所有使用的JDBC对象全都关闭,以释放JDBC资源,关闭顺序和声明顺序相反
  2. 关闭记录集
  3. 关闭声明
  4. 关闭连接对象
    finally{
      if(rs != null){   // 关闭记录集
        try{
          rs.close() ;
        }catch(SQLException e){
          e.printStackTrace() ;
        }
      }
      if(stmt != null){   // 关闭声明
        try{
          stmt.close() ;
        }catch(SQLException e){
          e.printStackTrace() ;
        }
      }
      if(conn != null){  // 关闭连接对象
        try{
          conn.close() ;
        }catch(SQLException e){
          e.printStackTrace() ;
        }
      }
    }
    

7、jdbc开发步骤图

二 JDBC基本使用_第3张图片
image

三、常用的对应的数据类型

mysql oracle java
TIMESTAMP Timestamp java.sql.Timestamp
VARCHAR VARCHAR2 CLOB java.lang.String
TEXT VARCHAR2 CLOB java.lang.String
INT NUMBER(10,0) java.lang.Integer
date(年月日) java.sql.Date
date(年月日时分秒) java.sql.Date

你可能感兴趣的:(二 JDBC基本使用)