Java连接Oracle数据库

Java与Oracle数据库的连接可以使用JDBC(Java DataBase Connectivity)来实现,本文将从以下几个方面对Java连接Oracle进行详细的阐述:

一、JDBC简介

JDBC是一种独立于数据库管理系统(DBMS)的API,它提供了一种标准的方法来访问不同类型的数据库。 Java程序通过JDBC来连接关系型数据库,从而可以执行SQL语句、访问和修改数据等操作。

目前JDBC规范包括两个部分:JDBC API和JDBC驱动程序。JDBC API是Java程序访问数据库的标准接口,而JDBC驱动程序则是提供JDBC API标准实现的库。

二、Oracle JDBC驱动

Oracle官方提供了一个JDBC驱动程序Oracle JDBC driver,用于连接Oracle数据库,可以从Oracle官网下载。下载时需要选择对应的JDBC版本、操作系统和Java版本。通常,我们使用最新版本的JDBC驱动程序。

三、连接Oracle数据库

Java程序连接Oracle数据库需要使用JDBC驱动程序,并且需要按照以下步骤进行:

1. 加载JDBC驱动程序

Java程序中需要使用JDBC驱动程序,因此需要在程序中加载驱动程序。加载驱动程序的方式有两种,一种是使用Class.forName()方法,另一种是使用DriverManager.registerDriver()方法。

// 第一种方式,使用Class.forName()方法加载驱动程序
Class.forName("oracle.jdbc.driver.OracleDriver");

// 第二种方式,使用DriverManager.registerDriver()方法加载驱动程序
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());

2. 连接数据库

连接Oracle数据库需要指定数据库的URL、用户名和密码。其中,URL由协议、主机、端口和数据库名组成。例如:

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

四、执行SQL语句

连接Oracle数据库后,Java程序可以执行SQL语句,包括查询、插入、更新和删除等操作。在Java中执行SQL语句需要使用Statement或PreparedStatement对象。其中,PreparedStatement对象可以预编译SQL语句,提高执行效率。

1. 查询数据

查询数据需要创建一个Statement或PreparedStatement对象,然后使用ResultSet获取查询结果。

// 创建PreparedStatement对象,预编译SQL语句
String sql = "SELECT * FROM emp WHERE deptno = ?";
PreparedStatement stmt = conn.prepareStatement(sql);
stmt.setInt(1, 10);

// 执行查询操作,获取ResultSet
ResultSet rs = stmt.executeQuery();
while(rs.next()) {
    // 处理查询结果
    int empno = rs.getInt("empno");
    String ename = rs.getString("ename");
    double sal = rs.getDouble("sal");
    // ...
}

2. 插入、更新和删除数据

插入、更新和删除数据同样需要创建PreparedStatement对象,并指定相应的SQL语句。执行结果可以使用executeUpdate()方法获取。

// 创建PreparedStatement对象,预编译SQL语句
String sql = "INSERT INTO emp VALUES (?, ?, ?, ?, ?, ?, ?, ?)";
PreparedStatement stmt = conn.prepareStatement(sql);
stmt.setInt(1, 8888);
stmt.setString(2, "test");
stmt.setString(3, "CLERK");
stmt.setInt(4, 7902);
stmt.setDate(5, new Date(System.currentTimeMillis()));
stmt.setDouble(6, 1500.00);
stmt.setDouble(7, null);
stmt.setInt(8, 10);

// 执行插入操作,获取更新结果
int result = stmt.executeUpdate();

五、关闭连接

Java程序连接Oracle数据库后,需要在不使用时关闭数据库连接,释放资源。关闭数据库连接可以使用Connection的close()方法,例如:

// 关闭数据库连接
conn.close();

六、完整代码示例

下面是一个完整的Java连接Oracle数据库的代码示例:

import java.sql.*;

public class OracleJdbcExample {

    public static void main(String[] args) {
        String url = "jdbc:oracle:thin:@localhost:1521:orcl";
        String username = "scott";
        String password = "tiger";

        try {
            // 加载Oracle JDBC驱动程序
            Class.forName("oracle.jdbc.driver.OracleDriver");

            // 连接Oracle数据库
            Connection conn = DriverManager.getConnection(url, username, password);

            // 查询数据
            String sql = "SELECT * FROM emp WHERE deptno = ?";
            PreparedStatement stmt = conn.prepareStatement(sql);
            stmt.setInt(1, 10);
            ResultSet rs = stmt.executeQuery();
            while(rs.next()) {
                int empno = rs.getInt("empno");
                String ename = rs.getString("ename");
                double sal = rs.getDouble("sal");
                System.out.println(empno + "\t" + ename + "\t" + sal);
            }
            rs.close();
            stmt.close();

            // 插入数据
            sql = "INSERT INTO emp VALUES (?, ?, ?, ?, ?, ?, ?, ?)";
            stmt = conn.prepareStatement(sql);
            stmt.setInt(1, 8888);
            stmt.setString(2, "test");
            stmt.setString(3, "CLERK");
            stmt.setInt(4, 7902);
            stmt.setDate(5, new Date(System.currentTimeMillis()));
            stmt.setDouble(6, 1500.00);
            stmt.setDouble(7, 0);
            stmt.setInt(8, 10);
            int result = stmt.executeUpdate();
            System.out.println("Insert result: " + result);
            stmt.close();

            // 关闭数据库连接
            conn.close();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

原创文章,作者:UXMQ,如若转载,请注明出处:https://www.506064.com/n/142889.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
UXMQUXMQ
上一篇 2024-10-14 18:43
下一篇 2024-10-14 18:43

相关推荐

  • java client.getacsresponse 编译报错解决方法

    java client.getacsresponse 编译报错是Java编程过程中常见的错误,常见的原因是代码的语法错误、类库依赖问题和编译环境的配置问题。下面将从多个方面进行分析…

    编程 2025-04-29
  • Java JsonPath 效率优化指南

    本篇文章将深入探讨Java JsonPath的效率问题,并提供一些优化方案。 一、JsonPath 简介 JsonPath是一个可用于从JSON数据中获取信息的库。它提供了一种DS…

    编程 2025-04-29
  • Java腾讯云音视频对接

    本文旨在从多个方面详细阐述Java腾讯云音视频对接,提供完整的代码示例。 一、腾讯云音视频介绍 腾讯云音视频服务(Cloud Tencent Real-Time Communica…

    编程 2025-04-29
  • Java Bean加载过程

    Java Bean加载过程涉及到类加载器、反射机制和Java虚拟机的执行过程。在本文中,将从这三个方面详细阐述Java Bean加载的过程。 一、类加载器 类加载器是Java虚拟机…

    编程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介绍

    本文将详细介绍Java Milvus SearchParam withoutFields的相关知识和用法。 一、什么是Java Milvus SearchParam without…

    编程 2025-04-29
  • Python 常用数据库有哪些?

    在Python编程中,数据库是不可或缺的一部分。随着互联网应用的不断扩大,处理海量数据已成为一种趋势。Python有许多成熟的数据库管理系统,接下来我们将从多个方面介绍Python…

    编程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java语言中的一个版本,于2014年3月18日发布。本文将从多个方面对Java 8中某一周的周一进行详细的阐述。 一、数组处理 Java 8新特性之一是Stream…

    编程 2025-04-29
  • Java判断字符串是否存在多个

    本文将从以下几个方面详细阐述如何使用Java判断一个字符串中是否存在多个指定字符: 一、字符串遍历 字符串是Java编程中非常重要的一种数据类型。要判断字符串中是否存在多个指定字符…

    编程 2025-04-29
  • openeuler安装数据库方案

    本文将介绍在openeuler操作系统中安装数据库的方案,并提供代码示例。 一、安装MariaDB 下面介绍如何在openeuler中安装MariaDB。 1、更新软件源 sudo…

    编程 2025-04-29
  • VSCode为什么无法运行Java

    解答:VSCode无法运行Java是因为默认情况下,VSCode并没有集成Java运行环境,需要手动添加Java运行环境或安装相关插件才能实现Java代码的编写、调试和运行。 一、…

    编程 2025-04-29

发表回复

登录后才能评论