探秘JDBC华南理工大学无线电爱好者协会软件小组Java学习笔记

Java 与数据库的桥梁——JDBC

2016-11-06  本文已影响1030人  廖少少

本人的环境为Myeclipse10、MySQL5.7.15

本文包括:

  1. 简介
  2. JDBC编程步骤
  3. 打通数据库
  4. 程序详解—DriverManager
  5. 程序详解—Connection
  6. 程序详解—Statement
  7. 程序详解—ResultSet
  8. 进阶应用—ResultSet滚动结果集
  9. 程序详解—释放资源
  10. 编写工具类简化CRUD操作
  11. PreparedStatement-防止SQL注入
  12. 使用JDBC进行批处理
  13. JavaEE体系结构
Paste_Image.png

1、 简介

  1. Java Data Base Connectivity(Java数据库连接):是java与数据库的桥梁,提供读写操作。

  2. 可以为多种数据库提供统一的访问,是一种统一标准。

  3. 通过JDBC可以连接Oracle、MySql、Sql Server数据库。

2、JDBC编程步骤

简单来说:

  1. 加载驱动程序

  2. 建立连接

  3. 操作数据

  4. 释放资源

具体而言:

  1. 通过DriverManager加载驱动程序driver;

  2. 通过DriverManager类获得表示数据库连接的Connection类对象;

  3. 通过Connection对象绑定要执行的语句,生成Statement类对象;

  4. 执行SQL语句,接收执行结果集ResultSet;

  5. 可选的对结果集ResultSet类对象的处理;

  6. 必要的关闭ResultSet、Statement和Connection

3、打通数据库

  1. 需要导入mysql-connector-java的jar包,如图所示:


    注意:可以直接将数据库驱动的jar包复制到/WebRoot/WEB/INF/lib/目录下,这时候根目录的Referenced Libraries 中会直接出现这个jar包。如果像图示的这样操作,那么还需要在这个jar包上单击右键-build path,把它添加到path中。

  2. 加载驱动程序:

     Class.forName(driverClass)
    
    • 加载Mysql驱动:

        Class.forName("com.mysql.jdbc.Driver")
      
    • 加载Oracle驱动:

        Class.forName("oracle.jdbc.driver.OracleDriver")
      

    为什么要用反射技术来加载驱动程序呢?详情见下文DriverManager的介绍。

  3. 获得数据库连接:

    • getConnection方法:

        DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/imooc", USER, PASSWORD);
      

    其中jdbc:mysql表示jdbc连接mysql,127.0.0.1:3306为服务器地址和端口,imooc为数据库名称,USER和PASSWORD分别为数据库的用户名和密码。

    • URL:

        jdbc:mysql://localhost:3306/test?key=value&key=value
      
      • 省略写法:

          jdbc:mysql:///test
        
      • URL中常用的参数:

          useUnicode=true&characterEncoding=UTF-8(注意:这里的字符集应该与客户端保持一致)
        
  4. 通过数据库的连接操作数据库,创建Statement对象:

     Statement stmt = conn.createStatement();
    

4、程序详解—DriverManager

5、程序详解—Connection

6、程序详解—Statement

7、程序详解—ResultSet

8、进阶应用—ResultSet滚动结果集

9、程序详解—释放资源

10、编写工具类简化CRUD操作

dbconfig.properties文件:

DRIVERCLASS=com.mysql.jdbc.Driver
URL=jdbc:mysql:///day14
USER=root
PWD=123

#DRIVERCLASS=oracle.jdbc.driver.OracleDriver
#URL=jdbc:oracle:thin:@localhost:1521:xe
#USER=system
#PWD=123

JDBCUtils文件:

package cn.itcast.jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ResourceBundle;

/**
 * JDBC 工具类,抽取公共方法
 * 
 * @author seawind
 * 
 */
public class JDBCUtils {
    private static final String DRIVERCLASS;
    private static final String URL;
    private static final String USER;
    private static final String PWD;

    //从dbconfig.properties文件中得到四个参数,方便切换数据库
    static {
        ResourceBundle bundle = ResourceBundle.getBundle("dbconfig");
        DRIVERCLASS = bundle.getString("DRIVERCLASS");
        URL = bundle.getString("URL");
        USER = bundle.getString("USER");
        PWD = bundle.getString("PWD");
    }

    // 建立连接
    public static Connection getConnection() throws Exception {
        loadDriver();
        return DriverManager.getConnection(URL, USER, PWD);
    }

    // 装载驱动
    private static void loadDriver() throws ClassNotFoundException {
        Class.forName(DRIVERCLASS);
    }

    // 释放资源
    public static void release(ResultSet rs, Statement stmt, Connection conn) {
        if (rs != null) {
            try {
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
            rs = null;
        }

        release(stmt, conn);
    }

    public static void release(Statement stmt, Connection conn) {
        if (stmt != null) {
            try {
                stmt.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
            stmt = null;
        }
        if (conn != null) {
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
            conn = null;
        }
    }
}

11、PreparedStatement-防止SQL注入

12、使用JDBC进行批处理

13、JavaEE体系结构

JDBC文集:

  1. Java 与数据库的桥梁——JDBC:http://www.jianshu.com/p/c0acbd18794c

  2. JDBC 进阶——连接池:http://www.jianshu.com/p/ad0ff2961597

  3. JDBC 进阶——元数据:http://www.jianshu.com/p/36d5d76342f1

  4. JDBC框架——DBUtils:http://www.jianshu.com/p/10241754cdd7

上一篇 下一篇

猜你喜欢

热点阅读