Java JDBC连接数据库常见操作总结

Java JDBC连接数据库常见操作总结

JDBC介绍

Java 数据库连接 (Java Database Connectivity, JDBC) 是一种用于执行 SQL 语句的 Java API,可以为多个关系数据库提供统一访问,它由一组用 Java 语言编写的类和接口组成,可以使 Java 应用程序轻松地访问数据库。

JDBC 本质上是通过 JNI(Java Native Interface)来调用本地代码实现的。这些本地代码组成的库被称作 JDBC 驱动程序(JDBC Driver)。JDBC 主要分为四个部分:JDBC 驱动管理器、JDBC 驱动程序、JDBC API 和 JDBC 数据库的连接。

JDBC连接数据库

使用 JDBC 连接数据库只需以下几步:

  • 导入 JDBC 驱动包:需要将 JDBC 驱动包放到 CLASSPATH 中,否则程序无法找到 JDBC 驱动。
  • 加载 JDBC 驱动程序:可以使用 Class.forName() 方法来加载 JDBC 驱动,例如加载 MySQL 驱动的代码为:Class.forName("com.mysql.jdbc.Driver");
  • 获取数据库连接对象:使用 DriverManager.getConnection() 方法获取数据库连接对象,需要传入数据库 URL、用户名和密码。
  • 执行 SQL 语句:可以使用 Statement 或 PreparedStatement 对象执行 SQL 语句。
  • 处理查询结果:使用 ResultSet 对象处理查询结果。

下面我们将通过两个示例说明如何连接数据库。

示例1:连接 MySQL 数据库

步骤1:导入 JDBC 驱动包

假设我们使用 MySQL 数据库,需要先下载 MySQL 的 JDBC 驱动包,下载地址为:https://dev.mysql.com/downloads/connector/j/。将下载得到的 JDBC 驱动包放到项目的 lib 目录下。

步骤2:加载 JDBC 驱动程序

加载 MySQL 驱动的代码为:

Class.forName("com.mysql.jdbc.Driver");

步骤3:获取数据库连接对象

获取 MySQL 数据库连接对象的代码为:

String url = "jdbc:mysql://localhost:3306/test?useSSL=false";
String user = "root";
String password = "123456";
Connection conn = DriverManager.getConnection(url, user, password);

其中,url 是连接字符串,test 是数据库名称,root 是用户名,123456 是密码。这里的 useSSL=false 表示不使用 SSL 连接。

步骤4:执行 SQL 语句

假设我们要执行一条查询语句,查询表中的所有数据,代码如下:

Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM user");

步骤5:处理查询结果

我们可以使用 ResultSet 对象处理查询结果,代码如下:

while (rs.next()) {
    int id = rs.getInt("id");
    String name = rs.getString("name");
    String email = rs.getString("email");
    System.out.println(id + "\t" + name + "\t" + email);
}

完整的示例代码如下:

import java.sql.*;

public class MySQLDemo {
    public static void main(String[] args) throws Exception {
        Class.forName("com.mysql.jdbc.Driver");

        String url = "jdbc:mysql://localhost:3306/test?useSSL=false";
        String user = "root";
        String password = "123456";
        Connection conn = DriverManager.getConnection(url, user, password);

        Statement stmt = conn.createStatement();
        ResultSet rs = stmt.executeQuery("SELECT * FROM user");
        while (rs.next()) {
            int id = rs.getInt("id");
            String name = rs.getString("name");
            String email = rs.getString("email");
            System.out.println(id + "\t" + name + "\t" + email);
        }

        rs.close();
        stmt.close();
        conn.close();
    }
}

输出结果为:

1   Alice   alice@example.com
2   Bob bob@example.com
3   Carol   carol@example.com

示例2:连接 Oracle 数据库

步骤1:导入 JDBC 驱动包

假设我们使用 Oracle 数据库,需要先下载 Oracle 的 JDBC 驱动包,下载地址为:http://www.oracle.com/technetwork/database/features/jdbc/default-2280470.html。将下载得到的 JDBC 驱动包放到项目的 lib 目录下。

步骤2:加载 JDBC 驱动程序

加载 Oracle 驱动的代码为:

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

步骤3:获取数据库连接对象

获取 Oracle 数据库连接对象的代码为:

String url = "jdbc:oracle:thin:@localhost:1521:orcl";
String user = "scott";
String password = "tiger";
Connection conn = DriverManager.getConnection(url, user, password);

其中,url 是连接字符串,localhost 是主机名,1521 是端口号,orcl 是数据库实例名。这里的 thin 表示用 thin 驱动连接,@ 后面的 : 表示用冒号隔开,依次是主机名、端口号和数据库实例名。

步骤4:执行 SQL 语句

假设我们要执行一条查询语句,查询表中的所有数据,代码如下:

Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM emp");

步骤5:处理查询结果

我们可以使用 ResultSet 对象处理查询结果,代码如下:

while (rs.next()) {
    int empno = rs.getInt("empno");
    String ename = rs.getString("ename");
    String job = rs.getString("job");
    System.out.println(empno + "\t" + ename + "\t" + job);
}

完整的示例代码如下:

import java.sql.*;

public class OracleDemo {
    public static void main(String[] args) throws Exception {
        Class.forName("oracle.jdbc.driver.OracleDriver");

        String url = "jdbc:oracle:thin:@localhost:1521:orcl";
        String user = "scott";
        String password = "tiger";
        Connection conn = DriverManager.getConnection(url, user, password);

        Statement stmt = conn.createStatement();
        ResultSet rs = stmt.executeQuery("SELECT * FROM emp");
        while (rs.next()) {
            int empno = rs.getInt("empno");
            String ename = rs.getString("ename");
            String job = rs.getString("job");
            System.out.println(empno + "\t" + ename + "\t" + job);
        }

        rs.close();
        stmt.close();
        conn.close();
    }
}

输出结果为:

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

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java JDBC连接数据库常见操作总结 - Python技术站

(0)
上一篇 2023年6月16日
下一篇 2023年6月16日

相关文章

  • 最全MyBatis核心配置文件总结(收藏)

    首先,要讲解这篇文章的完整攻略,需要分为以下几个部分来讲解: MyBatis核心配置文件是什么 MyBatis核心配置文件的常用配置 MyBatis核心配置文件的示例 MyBatis核心配置文件是什么 MyBatis是一款ORM框架,在使用MyBatis时需要使用到MyBatis核心配置文件。MyBatis核心配置文件是MyBatis配置和管理所有资源的入口…

    Java 2023年5月19日
    00
  • Java多线程优化方法及使用方式

    Java多线程优化方法及使用方式 为什么要使用多线程? 在单线程程序中,任务是按照顺序依次执行的。当我们需要处理较大的数据量或频繁地进行I/O操作时,单线程程序会带来很多问题。在这种情况下,使用多线程技术可以提高程序的性能和响应速度。具体而言,多线程可以带来以下好处: 提高CPU的利用率,从而加快程序运行速度; 可以利用多核CPU的优势,使各个线程之间互不干…

    Java 2023年5月26日
    00
  • Java 精炼解读时间复杂度与空间复杂度

    Java 精炼解读时间复杂度与空间复杂度攻略 什么是时间复杂度与空间复杂度 时间复杂度和空间复杂度是算法分析的两个重要参数。它们用于衡量算法的运行效率和空间消耗。 时间复杂度:衡量算法运行时间的增长率,通常用大O计数法表示。比如O(1)、O(n)、O(n^2)等等。 空间复杂度:衡量算法所需的内存空间大小的增长率,也是用大O计数法表示。和时间复杂度类似,也可…

    Java 2023年5月19日
    00
  • jQuery ajax请求struts action实现异步刷新

    接下来我将详细讲解“jQuery ajax请求struts action实现异步刷新”的完整攻略,这个过程中我会提供两个示例说明。 1. 什么是 jQuery ajax 请求? jQuery是一个流行的JavaScript库,提供了很多简化和方便的方法来操作页面上的元素和处理请求。其中,ajax是jQuery的一个方法,用于向服务器发送异步请求,而不需要刷新…

    Java 2023年6月15日
    00
  • SpringBoot应用的打包和发布实现

    打包和发布Spring Boot应用可以使用多种方法,下面是一些常见的方法: 方法一:使用Maven插件打包并上传到服务器 步骤一:使用Maven构建Spring Boot应用 在pom.xml文件中添加以下依赖: <!– 引入Spring Boot的pom依赖 –> <parent> <groupId>org.spr…

    Java 2023年5月19日
    00
  • Java多线程的用法详解

    Java多线程的用法详解 Java多线程是Java编程中非常重要的一个部分,在Java中通过多线程实现并发编程,提高程序的执行效率与响应能力,本文将详细讲解Java多线程的用法。 为什么需要多线程? 在介绍Java多线程之前,我们需要了解为什么需要多线程。首先,操作系统分给每个进程固定的资源是有限的,而非多线程的单进程只能利用其中一个CPU并执行一个任务。而…

    Java 2023年5月19日
    00
  • 微信开发之使用java获取签名signature

    关于微信开发中使用 Java 获取签名 signature 的攻略,具体步骤如下: 1. 准备工作 首先,需要在微信公众平台上创建一个开发者账号,并获取到 appID 和 appSecret。同时,需要引入一个 Java 的 SHA1 工具类,用于签名计算。 2. 获取 access_token 然后,需要通过微信提供的 API 获取 access_toke…

    Java 2023年5月26日
    00
  • 利用数组实现栈(Java实现)

    下面就详细讲解一下“利用数组实现栈(Java实现)”的完整攻略。 一、栈的概念 栈是一种具有特殊性质的线性结构,它只允许在一端进行插入和删除操作,这一端被称为栈顶。具体来说,栈的特点是后进先出(Last In First Out,LIFO)。 二、栈的实现 栈可以使用数组实现,这里我们介绍一种基于数组的简单栈实现方法: public class MyStac…

    Java 2023年5月26日
    00
合作推广
合作推广
分享本页
返回顶部