📜  在Java中建立 JDBC 连接

📅  最后修改于: 2022-05-13 01:54:29.038000             🧑  作者: Mango

在Java中建立 JDBC 连接

在前端(即您的Java程序)和后端(即数据库)之间建立连接之前,我们应该了解 JDBC 究竟是什么以及它为何存在。现在让我们讨论一下 JDBC 到底代表什么,并将借助真实插图来简化它的工作。

什么是 JDBC?

JDBC 是Java数据库连接的首字母缩写。这是 ODBC(开放式数据库连接)的进步。 JDBC 是为了将数据从前端移动到后端而开发的标准 API 规范。该 API 由用Java编写的类和接口组成。它基本上充当Java程序和数据库之间的接口(不是我们在Java中使用的接口)或通道,即它在两者之间建立链接,以便程序员可以从Java代码发送数据并将其存储在数据库中以供将来使用.

说明: JDBC 与实时相关的工作

为什么 JDBC 应运而生?

如前所述,JDBC 是 ODBC 的一个进步,ODBC 依赖于平台有很多缺点。 ODBC API 是用 C、C++、 Python、Core Java编写的,正如我们所知,上述语言( Java和Python的某些部分除外)是平台相关的。因此,为了消除依赖,JDBC 是由数据库供应商开发的,它由用Java编写的类和接口组成。

Java程序和数据库之间的连接步骤

  1. 导入包
  2. 使用forName() 方法加载驱动程序
  3. 使用 DriverManager注册驱动程序
  4. 使用 Connection 类对象建立连接
  5. 创建声明
  6. 执行查询
  7. 关闭连接

让我们在实现之前简要讨论这些步骤,通过编写合适的代码来说明 JDBC 的连接步骤/

第 1 步:导入包

第 2 步:加载驱动程序

首先,您首先需要加载驱动程序或注册它,然后才能在程序中使用它。注册将在您的程序中完成一次。您可以通过以下两种方式之一注册驱动程序:

2-A 类.forName()

这里我们在运行时将驱动程序的类文件加载到内存中。无需使用新对象或创建对象。以下示例使用 Class.forName() 加载 Oracle 驱动程序,如下所示:

Class.forName(“oracle.jdbc.driver.OracleDriver”);

2-B DriverManager.registerDriver()

DriverManager 是一个带有静态成员寄存器的Java内置类。这里我们在编译时调用驱动类的构造函数。以下示例使用 DriverManager.registerDriver() 注册 Oracle 驱动程序,如下所示:

DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver())

第 4 步:使用Connection 类对象建立连接

加载驱动后,如下图建立连接:

Connection con = DriverManager.getConnection(url,user,password)
  • 用户:可以访问您的 SQL 命令提示符的用户名。
  • 密码:可以访问 SQL 命令提示符的密码。
  • con:它是对 Connection 接口的引用。
  • Url : Uniform Resource Locator 创建如下所示:
String url = “ jdbc:oracle:thin:@localhost:1521:xe”

其中 oracle 是使用的数据库,thin 是使用的驱动程序,@localhost 是存储数据库的 IP 地址,1521 是端口号,xe 是服务提供者。以上3个参数均为String类型,由程序员在调用函数前声明。这个的使用可以参考最终代码。

第 5 步:创建声明

建立连接后,您可以与数据库进行交互。 JDBCStatement、CallableStatement 和 PreparedStatement 接口定义了使您能够发送 SQL 命令和从数据库接收数据的方法。
JDBC Statement的使用如下:

Statement st = con.createStatement();

第 6 步:执行查询

现在是最重要的部分,即执行查询。这里的查询是一个 SQL 查询。现在我们知道我们可以有多种类型的查询。其中一些如下:

  • 在数据库中更新/插入表的查询。
  • 用于检索数据的查询。

Statement 接口的 executeQuery() 方法用于执行从数据库中检索值的查询。该方法返回 ResultSet 的对象,该对象可用于获取表的所有记录。
Statement 接口的 executeUpdate(sql query) 方法用于执行更新/插入的查询。

伪代码:

int m = st.executeUpdate(sql);
if (m==1)
    System.out.println("inserted successfully : "+sql);
else
    System.out.println("insertion failed");

第 7 步:关闭连接

所以最后我们已经将数据发送到指定的位置,现在我们即将完成我们的任务。通过关闭连接,Statement 和 ResultSet 对象将自动关闭。 Connection 接口的 close() 方法用于关闭连接。如下图所示:

con.close();

例子:

Java
// Java Program to Establish Connection in JDBC
 
// Importing database
import java.sql.*;
// Importing required classes
import java.util.*;
 
// Main class
class Main {
 
    // Main driver method
    public static void main(String a[])
    {
 
        // Creating the connection using Oracle DB
        // Note: url syntax is standard, so do grasp
        String url = "jdbc:oracle:thin:@localhost:1521:xe";
 
        // Username and password to access DB
        // Custom initialization
        String user = "system";
        String pass = "12345";
 
        // Entering the data
        Scanner k = new Scanner(System.in);
 
        System.out.println("enter name");
        String name = k.next();
 
        System.out.println("enter roll no");
        int roll = k.nextInt();
 
        System.out.println("enter class");
        String cls = k.next();
 
        // Inserting data using SQL query
        String sql = "insert into student1 values('" + name
                     + "'," + roll + ",'" + cls + "')";
 
        // Connection class object
        Connection con = null;
 
        // Try block to check for exceptions
        try {
 
            // Registering drivers
            DriverManager.registerDriver(
                new oracle.jdbc.OracleDriver());
 
            // Reference to connection interface
            con = DriverManager.getConnection(url, user,
                                              pass);
 
            // Creating a statement
            Statement st = con.createStatement();
 
            // Executing query
            int m = st.executeUpdate(sql);
            if (m == 1)
                System.out.println(
                    "inserted successfully : " + sql);
            else
                System.out.println("insertion failed");
 
            // Closing the connections
            con.close();
        }
 
        // Catch block to handle exceptions
        catch (Exception ex) {
            // Display message when exceptions occurs
            System.err.println(ex);
        }
    }
}


输出: