13.Oracle通过JDBC连接Java

news2024/11/26 8:36:11

Oracle通过JDBC连接Java

  • 一、什么是JDBC
  • 二、Oracle通过JDBC连接Java
    • 1、导入jar包
      • 1.1 下载jar包
      • 1.2 将jar包导入到java项目中
      • 1.3编译jar包
    • 2、连接数据库
      • 2.1 编写jdbc工具类
      • 2.2 对数据进行基本操作

一、什么是JDBC

  JDBC(Java Database Connectivity)是Java语言用于与数据库进行连接和交互的标准API。它提供了一种统一的方式来访问各种不同类型的数据库,包括Oracle、MySQL、SQL Server等。JDBC允许开发人员使用Java编程语言来执行SQL查询、更新数据库记录以及处理事务等操作。

在Oracle数据库中,使用JDBC可以通过以下步骤进行连接和操作:

  1. 加载数据库驱动程序:使用Class.forName方法加载特定数据库的JDBC驱动程序,例如oracle.jdbc.driver.OracleDriver

  2. 建立数据库连接:使用DriverManager.getConnection方法来获取与数据库的连接,需要提供数据库的URL、用户名和密码。

  3. 创建并执行SQL语句:使用StatementPreparedStatement对象来创建和执行SQL查询、插入、更新和删除等操作。

  4. 处理查询结果:对于SELECT语句,可以通过ResultSet对象获取查询结果,并进行相应的处理。

  5. 关闭数据库连接:在操作完成后,需要调用Connection对象的close方法来关闭数据库连接,释放资源。

  通过JDBC,开发人员可以在Java应用程序中轻松地与Oracle数据库进行交互,执行各种数据库操作。这使得Java应用程序能够与数据库进行无缝集成,实现数据的存储、检索和处理等功能。

二、Oracle通过JDBC连接Java

1、导入jar包

1.1 下载jar包

下载地址:https://www.oracle.com/cn/database/technologies/appdev/jdbc-downloads.html

根据自己的java环境下载相应的jar包,示例如下:

在这里插入图片描述程序运行可能会出现以下问题:java.sql.SQLException: ORA-17056: 不支持的字符集(在类路径中添加 orai18n.jar): ZHS16GBK
因此还需添加以下jar包:

在这里插入图片描述

下载地址https://mavenlibs.com/jar/file/com.oracle.database.nls/orai18n

1.2 将jar包导入到java项目中

直接将所下载的ojdbc.jar复制到java项目的lib目录下,如下图示例:

在这里插入图片描述

1.3编译jar包

如下图示例:

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

2、连接数据库

2.1 编写jdbc工具类

此类是为更方便操作数据库连接

package oracleConnection;

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

/**
 * 操作数据库的工具类
 * 
 * @author en
 *
 */
public class jdbcUtils {
	// 获取数据库连接

	public static Connection getConnection() throws Exception {
		// JDBC连接参数
		// 数据库连接字符串,格式为 jdbc:oracle:thin:@host:port:SID
		String jdbcUrl = "jdbc:oracle:thin:@192.168.66.120:1521:ORCL";
		// 数据库用户名
		String username = "test";
		// 数据库密码
		String password = "test";
		// oracle数据库驱动
		String diverClass = "oracle.jdbc.OracleDriver";

		// 2、加载驱动
		Class.forName(diverClass);

		// 3、获取连接
		Connection conn = DriverManager.getConnection(jdbcUrl, username, password);
		return conn;
	}
	// 关闭连接和Statement的操作

	public static void closeResource(Connection conn, PreparedStatement ps) {
		try {
			if (ps != null) {
				ps.close();
			}

		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		try {
			if (conn != null) {
				conn.close();
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	// 关闭资源的操作
	public static void closeResource(Connection conn, PreparedStatement ps, ResultSet rs) {

		try {
			if (ps != null) {
				ps.close();
			}

		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		try {
			if (conn != null) {
				conn.close();
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		try {
			if (rs != null) {
				rs.close();
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

2.2 对数据进行基本操作

下面是一个简单的示例,演示了如何使用JDBC连接Oracle数据库进行相关的增删改操作:

package oracleConnection;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

/**
 * JDBC连接Oracle数据库进行增删改查操作
 * 
 * @author wjw
 *
 */
public class controlData {

	public static void main(String[] args) {
		select();
	}

	// 查询表中数据
	public static void select() {

		Connection conn = null;
		ResultSet rs = null;
		PreparedStatement ps = null;
		
		try {
			// 连接数据库
			conn = jdbcUtils.getConnection();
		
			ps = conn.prepareStatement("select * from t");
			rs = ps.executeQuery();
			// 处理查询结果
			while (rs.next()) {
				// 从结果集中获取数据,例如:
				int id = rs.getInt("ID");
				String name = rs.getString("NAME");
				// 在这里处理数据
				System.out.println("ID: " + id + ", Name: " + name);
			}

		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			jdbcUtils.closeResource(conn, ps, rs);
		}
	}
}

运行结果如下:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1219408.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

mysql查询json字符串内容

参考文章:mysql json 基础查询_mysql json查询-CSDN博客 mysql查询json字符串内容 (多层数组嵌套) select id,nameJSON_EXTRACT(JSON_UNQUOTE(JSON_EXTRACT(JSON_UNQUOTE(config_json), $.baseInfo)), $.template_list[*].sms_content) s…

在微信上怎么做抽奖活动

微信抽奖活动:让你轻松吸引粉丝,打造火爆互动场景! 随着微信的普及,越来越多的人开始利用微信平台进行营销和推广。而微信抽奖活动作为一种有效的营销手段,能够迅速吸引用户的关注和参与,提高品牌曝光度和…

文件包含_具体场景、zip、php相关问题

具体场景—上传可控的文件 具体场景—远程文件包含 具体场景—伪协议

使用键盘管理器更改键盘快捷键,让键盘真正迎合你的使用习惯

如果默认快捷键不适合你,你肯定会想知道如何在Windows 11中更改键盘快捷键。 也许你已经习惯了macOS键盘,或者像我一样在Windows和Mac之间切换工作/游戏——如果是这样的话,重新配置默认的Windows快捷方式,使其与Mac上的快捷方式…

畜牧业可视化畜牧业数字孪生

"畜牧业是我国重要的农业产业之一,对于国民经济的发展和人民群众的生活具有重要的意义。智慧畜牧作为现代畜牧业的发展方向之一,将信息技术和现代管理相结合,提高养殖效率和品质,为行业的可持续发展注入新的动力。智慧畜牧是…

产品经理的能力模型是什么?

一个产品的成功需要团队成员利用自己的技能共同合作完成。作为团队的核心和产品的主导者,产品经理需要具备一定的能力模型,以更好地完成工作。下面从五个方面进行解答。 首先,产品经理需要具备需求分析的能力。需求是用户在特定场景下产生的欲…

go语言学习之旅之Go语言数据类型

学无止境,今天学习Go 语言数据类型 Go(或Golang)是一种静态类型语言,这意味着变量的数据类型必须显式声明,并且在运行时不能更改。以下是Go中的一些基本数据类型: 这里仅介绍最常用的类型 数值类型: int: …

计算机领域十大天神

✍️作者简介:沫小北/码农小北(专注于Android、Web、TCP/IP等技术方向) 🐳博客主页:沫小北/码农小北 开源中国、稀土掘金、51cto博客、博客园、知乎、简书、慕课网、CSDN 🔔如果文章对您有一定的帮助请&…

Redis篇---第四篇

系列文章目录 文章目录 系列文章目录前言一、说一下 Redis 有什么优点和缺点二、Redis 缓存刷新策略有哪些?三、Redis 持久化方式有哪些?以及有什么区别?前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章…

OpenLayer系列——【一】初识OpenLayer与OpenLayer视图操作

初识OpenLayer 1、初始化地图渲染 安装openlayer依赖 npm i ol首先准备一个容器用来渲染地图 <div id"map" ref"map" style"width: 100%; height: 100%" />导入依赖初始化地图 import ol/ol.css; import OSM from ol/source/OSM.js; …

浅谈智能安全配电装置应用在银行配电系统中

【摘要】银行是国家重点安全保护部分&#xff0c;关系到社会资金的稳定&#xff0c;也是消防重点单位。消防安全是银行工作的重要组成部分。在银行配电系统中应用智能安全配电装置&#xff0c;可以提高银行的智能控制水平&#xff0c;有效预防电气火灾。 【关键词】银行&#…

敲敲云与简道云流程设计引擎对比:选择更适合您的产品

在当今数字化时代&#xff0c;流程管理和自动化变得越来越重要。作为APaaS服务的两个知名产品&#xff0c;敲敲云和简道云都提供了流程设计引擎&#xff0c;帮助企业实现高效的流程管理。然而&#xff0c;在比较两者之后&#xff0c;您可能会发现敲敲云在多个方面具有优势&…

2023年05月 Scratch(一级)真题解析#中国电子学会#全国青少年软件编程等级考试

一、单选题(共25题,每题2分,共50分) 第1题 看图找规律,请问下图红框中是?( ) A: B: C: D: 答案:D 第2题 用一根绳子绕树一圈余30厘米,如果绕树二圈则差40厘米,请问绳子长多少厘米?( )<

经典文献阅读之--Surround-View Survey(自动驾驶中基于环视视觉的3D检测综述)

0. 简介 对于基于环视视觉的3D检测而言&#xff0c;目前已经有很多文章了。因为基于视觉的3D检测任务是自动驾驶系统感知的基本任务&#xff0c;然而&#xff0c;使用单目相机的2D传感器输入数据来实现相当好的3D BEV&#xff08;鸟瞰图&#xff09;性能不是一项容易的任务。这…

素质教育正式提出30周年 提高实际应用能力成为教育新选择

至2023年“素质教育”已正式提出30周年。在实施期间,素质教育取得了显著成就:不仅提高了学生的综合素质和竞争力,培养了学生的创新能力、实践能力等,同时也改变了应试导向和知识灌输的教育模式,建立了以人为本、以学为主的教育理念。 教育观念发生扭转,教育目标也随之改变。学…

jenkins-2.426.1-1.1.noarch.rpm 的公钥没有安装

执行命令 yum install jenkins 报错 jenkins-2.426.1-1.1.noarch.rpm 的公钥没有安装 下载的软件包保存在缓存中&#xff0c;直到下次成功执行事务。 您可以通过执行 yum clean packages 删除软件包缓存。 错误&#xff1a;GPG 检查失败 解决办法&#xff1a; 1、安装新的公…

OpenShift 4 - 就地调整 Pod 资源使用量

《OpenShift / RHEL / DevSecOps 汇总目录》 说明&#xff1a;本文已经在 OpenShift 4.14 的环境中验证 文章目录 为什么需要就地调整 Pod 资源启动 InPlacePodVerticalScaling 特性实现就地调整 Pod 资源参考 为什么需要就地调整 Pod 资源 以往在 Kubernetes 中调整 Pod 的 …

事务死锁排查

记一次 事务死锁的排查过程 首先使用 SELECT * FROM INFORMATION_SCHEMA.INNODB_TRX;可以查看当前数据库所有事务状态 使用 SHOW ENGINE INNODB STATUS可以查看一些事务状态 可以看出 trxId 565678168 锁住了 invoice表&#xff0c; 使用命令杀掉对应mysql线程&#xff0…

跟李沐学AI-深度学习课程00-03【预告、课程安排、深度学习介绍、安装】

目录 00 预告 01 课程安排 02 深度学习介绍 03 安装 本地安装 04 数据操作数据预处理 数据操作 数据类型 创建数组 访问元素 数据操作实现 入门 运算符 广播机制 索引和切片 节省内存 转换为其他Python对象 数据预处理实现 读取数据集 处理缺失值 转换为张…

【前段基础入门之】=>CSS3新特性 响应式布局

文章目录 概念媒体查询媒体类型媒体特性媒体运算符 概念 所谓对响应式布局方案的理解&#xff0c;众说纷纭&#xff0c;核心点就是同一套代码在不同尺度屏幕下的布局呈现方式的不同 社区中有很多人分享&#xff0c;并列出了多种实现响应式布局的方案&#xff0c;比如【 rem&…