【jdbc】oracle java tutorial—JDBC Basics

使用 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 Reads
TRANSACTION_NONENot supportedNot applicableNot applicableNot applicable
TRANSACTION_READ_COMMITTEDSupportedPreventedAllowedAllowed
TRANSACTION_READ_UNCOMMITTEDSupportedAllowedAllowedAllowed
TRANSACTION_REPEATABLE_READSupportedPreventedPreventedAllowed
TRANSACTION_SERIALIZABLESupportedPreventedPreventedPrevented

































评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值