JDBC的简介

Java  Database Connectivity:连接数据库技术。

SUN公司为了简化、统一对数据库的操作,定义了一套Java操作数据库的规范(接口),使用同一套程序操作不同的数据库,称之为JDBC。

简单的说,JDBC的意义在于在Java程序中执行SQL语句。

JDBC开发支持jar:

  java.sql

  javax.sql

  驱动包

JDBC的工作原理

 JDBC中核心类:DriverManager驱动管理器

JDBC主要分为两层,第一层为Java的接口层,主要面向Java的应用程序开发者,它定义了操作数据库的各种功能的接口,第二层为数据库驱动层,为数据库供应商提供了注册其数据库产品驱动程序的接口,两者之间是通过驱动管理器来负责协调和管理的。由于JDBC为所有支持的数据库提供了统一的API接口,因此在实际的开发中,如果软件产品被要求同时支持多种数据库平台,其间主要的差异将来自于不同数据库产品在特殊SQL语句方面的差异,至于调用接口方面,如果没有使用极为依赖数据库平台的接口API,那么该部分程序代码将不用作出任何改变。以下我们将通过示例代码的方式逐步了解JDBC中提供的API接口。

Day5 JDBC

JDBC的开发步骤

 1.实现驱动注册(DriverManager)

 2.建立连接

 3.创建以及发送SQL指令

 4.获取以及处理响应

 5.释放资源

JDBC的入门案例

 1.导入驱动包,建立一个lib文件夹存放程序需要的一些jar包,建立之后将jar包复制黏贴进到lib下

 

Day5 JDBC

 

Day5 JDBC

 2.简单案例

程序代码

package test;

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

import com.mysql.jdbc.Driver;

public class JDBCTest {

    public static void main(String[] args) throws Exception {
        // 1.借助DriverManager实现驱动的注册(mysql驱动就在DriverManager中管理)
        //DriverManager.registerDriver(new Driver());
        //   反射(DriverManager.registerDriver()注册的唯一方法),注册驱动
        Class.forName("com.mysql.jdbc.Driver");
        
        // 2.建立连接
        // jdbc:mysql://localhost:3306/db1711
        // 协议:子协议://IP:端口/数据库
        Connection conn =  DriverManager.getConnection(
                "jdbc:mysql://localhost:3306/db1711",//url统一资源定位符(路径)和mysql DBMS的哪个数据库建立连接
                "root",//user用户
                "123456");//password密码
        // 查看是否连接成功
        // System.out.println(conn);//com.mysql.jdbc.JDBC4Connection@4d405ef7
        
        // 3.发送sql指令
        String sql = "select * from emp";
        // 创建Statement的实现类的对象
        Statement stmt = conn.createStatement();
        // executeUpdate():增删该,返回的是int类型,影响的行数,0是失败
        // executeQuery():查询,返回的是结果集
        ResultSet rs = stmt.executeQuery(sql);
        
        // 4.结果集的处理()
        // rs.next():boolean类型,游标,没有值的话返回false
        while(rs.next()) {//遍历每一行的数据
            // 依次获取每一列的数据
            int empno = rs.getInt("empno");
            String ename = rs.getString("ename");
            System.out.println(empno+"\t"+ename);
        }
        
        // 5.释放资源
        rs.close();
        stmt.close();
        conn.close();
    }

} 

显示结果

7369    SMITH
7499    ALLEN
7521    WARD
7566    JONES
7654    MARTIN
7698    BLAKE
7782    CLARK
7788    SCOTT
7839    KING
7844    TURNER
7876    ADAMS
7900    JAMES
7902    FORD
7934    MILLER

 

核心API详解

DriverManager

驱动注册

第一种方式,会造成DriverManager中产生两个一样的驱动,并会对具体的驱动类产生依赖。

// 1.借助DriverManager实现驱动的注册(mysql驱动就在DriverManager中管理)
DriverManager.registerDriver(new Driver());

 

第二种方式,反射加载(推荐),注册一次,在driver类加载的时候就注册了

 //   反射(DriverManager.registerDriver()注册的唯一方法),注册驱动
 Class.forName("com.mysql.jdbc.Driver");

 

Driver部分原码

public class Driver extends NonRegisteringDriver implements java.sql.Driver {
    // ~ Static fields/initializers
    // ---------------------------------------------

    //
    // Register ourselves with the DriverManager
    //
    static {
        try {
            java.sql.DriverManager.registerDriver(new Driver());
        } catch (SQLException E) {
            throw new RuntimeException("Can't register driver!");
        }
    }
}

 

增删改查案例

 1 public static void insert(int deptno,String dname,String loc) throws Exception{
 2         Class.forName("com.mysql.jdbc.Driver");
 3         Connection conn =  DriverManager.getConnection(
 4                 "jdbc:mysql://localhost:3306/db1711",
 5                 "root",
 6                 "123456");
 7         Statement stmt = conn.createStatement();
 8         String sql = "INSERT INTO dept VALUES("+deptno+",'"+dname+"','"+loc+"')";
 9         int num = stmt.executeUpdate(sql);
10         System.out.println(num);
11         stmt.close();
12         conn.close();
13         
14     }
View Code

相关文章: