📜  Java数据库连接JDBC驱动程序(1)

📅  最后修改于: 2023-12-03 15:02:04.921000             🧑  作者: Mango

Java数据库连接JDBC驱动程序

什么是JDBC?

Java数据库连接(JDBC)是一个Java API,用于与执行SQL的各种关系数据库进行交互。它包含了在Java程序中连接并操作数据库的一组标准接口。

JDBC架构

JDBC包括两个主要部分:JDBC API和JDBC驱动程序。

JDBC API

JDBC API是Java定义的一组标准接口,用于与关系数据库进行交互。它提供了一组类和接口,用于执行各种数据库任务,例如建立连接、执行查询、插入数据、更新数据等。

JDBC驱动程序

JDBC驱动程序是连接不同类型数据库的程序。JDBC API与特定数据库的交互是通过驱动程序实现的。不同类型的数据库需要不同的驱动程序来与JDBC API进行交互。

JDBC驱动程序通常分为以下几种:

  1. JDBC-ODBC桥接器驱动程序:通过ODBC驱动程序与各种不同的数据库进行交互。
  2. 原生API驱动程序:直接与特定类型的数据库进行交互。
  3. 网络协议驱动程序:通过TCP/IP协议与特定类型的数据库进行交互。
JDBC使用步骤

下面是使用JDBC进行数据库连接和数据操作的基本步骤:

步骤1. 导入JDBC驱动程序

在Java代码中使用JDBC API进行数据库交互之前,必须先将所需的JDBC驱动程序导入到项目中。JDBC驱动程序通常以JAR文件的形式提供。

步骤2. 建立数据库连接

使用JDBC API中提供的DriverManager类建立数据库连接。在建立连接时需要指定数据库的URL、用户名和密码等参数。

import java.sql.*;

// JDBC driver name and database URL
static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
static final String DB_URL = "jdbc:mysql://localhost/EMP";

// Database credentials
static final String USER = "username";
static final String PASS = "password";

public static void main(String[] args) {
    Connection conn = null;
    try{
        //Register JDBC driver
        Class.forName(JDBC_DRIVER);

        //Open a connection
        conn = DriverManager.getConnection(DB_URL,USER,PASS);
    }catch(SQLException se){
        //Handle errors for JDBC
        se.printStackTrace();
    }catch(Exception e){
        //Handle errors for Class.forName
        e.printStackTrace();
    }finally{
        //finally block used to close resources
        try{
            if(conn!=null)
                conn.close();
        }catch(SQLException se){
            se.printStackTrace();
        }//end finally try
    }//end try
}//end main
步骤3. 执行SQL查询

在建立数据库连接之后,就可以使用Statement对象执行SQL查询了。以下代码演示了如何查询一个名为“employees”的表中的所有数据:

import java.sql.*;

// ...

Connection conn = null;
Statement stmt = null;
try{
    //Register JDBC driver
    Class.forName(JDBC_DRIVER);

    //Open a connection
    conn = DriverManager.getConnection(DB_URL,USER,PASS);

    //Execute a query
    stmt = conn.createStatement();
    String sql;
    sql = "SELECT id, first, last, age FROM employees";
    ResultSet rs = stmt.executeQuery(sql);

    //Extract data from result set
    while(rs.next()){
        //Retrieve by column name
        int id  = rs.getInt("id");
        int age = rs.getInt("age");
        String first = rs.getString("first");
        String last = rs.getString("last");

        //Display values
        System.out.print("ID: " + id);
        System.out.print(", Age: " + age);
        System.out.print(", First: " + first);
        System.out.println(", Last: " + last);
    }
    //Clean-up environment
    rs.close();
    stmt.close();
    conn.close();
}catch(SQLException se){
    //Handle errors for JDBC
    se.printStackTrace();
}catch(Exception e){
    //Handle errors for Class.forName
    e.printStackTrace();
}finally{
    //finally block used to close resources
    try{
        if(stmt!=null)
            stmt.close();
    }catch(SQLException se2){
    }// nothing we can do
    try{
        if(conn!=null)
            conn.close();
    }catch(SQLException se){
        se.printStackTrace();
    }//end finally try
}//end try
步骤4. 更新数据库

使用JDBC API中提供的PreparedStatement对象执行更新数据库的操作。以下代码演示了如何向一个名为“employees”的表中插入一条记录:

import java.sql.*;

// ...

Connection conn = null;
PreparedStatement stmt = null;
try{
    //Register JDBC driver
    Class.forName(JDBC_DRIVER);

    //Open a connection
    conn = DriverManager.getConnection(DB_URL,USER,PASS);

    //Execute a query
    String sql = "INSERT INTO employees (first, last, age) VALUES (?, ?, ?)";
    stmt = conn.prepareStatement(sql);
    stmt.setString(1, "John");
    stmt.setString(2, "Doe");
    stmt.setInt(3, 25);
    stmt.executeUpdate();

    //Clean-up environment
    stmt.close();
    conn.close();
}catch(SQLException se){
    //Handle errors for JDBC
    se.printStackTrace();
}catch(Exception e){
    //Handle errors for Class.forName
    e.printStackTrace();
}finally{
    //finally block used to close resources
    try{
        if(stmt!=null)
            stmt.close();
    }catch(SQLException se2){
    }// nothing we can do
    try{
        if(conn!=null)
            conn.close();
    }catch(SQLException se){
        se.printStackTrace();
    }//end finally try
}//end try
总结

JDBC是Java程序与关系数据库进行交互的标准接口。使用JDBC API需要按照一定的步骤:导入JDBC驱动程序、建立数据库连接、执行SQL查询和更新数据库。使用JDBC可以让Java程序更加灵活地操作数据库,并且具有较好的可移植性。