【jdbc】oracle java tutorial—JDBC Basics

来源:互联网 发布:php仿qq聊天系统 编辑:程序博客网 时间:2024/05/22 06:08

使用 JDBC 处理 SQL语句                                                                  

一般使用 JDBC 处理 SQL语句 ,遵循以下几个步骤:  详情参看: oracle 官网 JDBC Basics

       ★  建立 一个 连接

       ★ 创建一个 statement

       ★  执行查询

       ★  处理结果集对象(ResultSet 对象)

       ★  关闭连接

建立连接

       通常,JDBC 应用连接目标数据源使用以下两个类中的一个:

        ★  DriverManager   该实现类通过指定数据库 的 url 连接数据库 ,在连接数据库之前,必须要手动加载 JDBC 驱动 。然后 他会自动加载 类路径下的任意的 JDBC 驱动。

加载 JDBC 驱动(以 mysql 为例):

引用 mysql 驱动 jar 包

        <dependency>            <groupId>mysql</groupId>            <artifactId>mysql-connector-java</artifactId>            <version>5.1.9</version>        </dependency>


     ★ DataSource        相比 DriverManager 实现类,该接口是首选的 ,因为该接口可以设置数据源的底层信息。DataSource 支持 数据库连接池 和 分布式事物。

使用 DataSource 对象获取连接


创建  Statement


    一个  Statement 代表 一条 SQL 语句 的接口 ,通过 执行 Statement 对象 ,生成  ResultSet 对象 。

有以下三种 Statement:

      ★ Statement

      ★ PreparedStatement (继承 Statement) :用于预编译  可能包含输入参数的 SQL 语句 ,通过 Connection 对象获取 ,可以动态设置输入参数,以 ?(问号)作为占位符。


package com.ycit;import org.junit.Test;import java.sql.*;/** * Created by xlch on 2016/11/10. */public class DbConnection {    @Test    public void connection() {        Connection connection = null;        PreparedStatement statement = null;        try {            Class.forName("com.mysql.jdbc.Driver"); // java 反射            connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/xlch", "root", "root");//参数分别代表 url 、userName 、password            statement = connection.prepareStatement("select * from user where id = ?");            statement.setInt(1, 1);//动态设置 id 为 1,index 为 1(起始为1)            ResultSet set = statement.executeQuery();            while (set.next()) {                System.out.println("id===" + set.getInt("id") + "    name===" + set.getString(2));//可以通过 index 或者 labelName 获取            }        } catch (ClassNotFoundException e) {            e.printStackTrace();        } catch (SQLException e) {            e.printStackTrace();        } finally {            if (statement != null) {                try {                    statement.close();                } catch (SQLException e) {                    e.printStackTrace();                }            }            if (connection != null) {                try {                    connection.close();                } catch (SQLException e) {                    e.printStackTrace();                }            }        }    }}




 

      ★ CallableStatement (继承 PreparedStatement)


执行查询

     

 查询方法有如下几种:

       ★ execute()

                   如果执行后返回的是 一个 ResultSet 对象 ,则返回 true ,否则 返回 false. 如果为 true ,则可以再次调用  statement.getResultSet() 获取结果集。

       ★ executeQuery() : 返回 ResultSet 结果集。

       ★ executeUpdate() :返回 一个整数 ,代表被影响的记录数 ,当 insert 、delete 、update 时 使用 该方法。


处理 结果集(ResultSet)对象


      见 上面栗子。


关闭连接


     见上面栗子。


使用事物                          

con.setAutoCommit(false); //开始时con.rollback();//发生异常时回滚con.commit();//结束时提交

事物的四种隔离级别

Isolation LevelTransactionsDirty ReadsNon-Repeatable ReadsPhantom ReadsTRANSACTION_NONENot supportedNot applicableNot applicableNot applicableTRANSACTION_READ_COMMITTEDSupportedPreventedAllowedAllowedTRANSACTION_READ_UNCOMMITTEDSupportedAllowedAllowedAllowedTRANSACTION_REPEATABLE_READSupportedPreventedPreventedAllowedTRANSACTION_SERIALIZABLESupportedPreventedPreventedPrevented

































0 0
原创粉丝点击