当前位置: 首页 > news >正文

【现场问题】oracle 11g 和12c 使用jdbc链接,兼容的问题

oracle不同版本

  • 问题是什么
  • 寻找解决方式
    • 首先Oracle的jdbc链接有几种形式?
    • Oracle 11g的链接是什么呢
    • Oracle 12C的链接是什么呢
    • 我的代码是哪种!?
    • 发现问题没
  • 解决问题
  • 代码

问题是什么

项目上建立Oracle数据源,以前大部分都是,11g的版本,测试包括获取表以及字段都没有问题,后来新的现场,多了一种oracle的版本12c,这个版本的数据库一直显示无法链接。
如图:
在这里插入图片描述
Caused by: oracle.net.ns.NetException: Listener refused the connection with the following error:
ORA-12514, TNS:listener does not currently know of service requested in connect descriptor
(CONNECTION_ID=ZQApaCNVQcuxVuA+hzvDew==)

寻找解决方式

首先Oracle的jdbc链接有几种形式?

Oracle 11g的链接是什么呢

String jdbcUrl = "jdbc:oracle:thin:@hostname:port:SID";
String jdbcUrl = "jdbc:oracle:thin:@localhost:1521:ORCL";
String jdbcUrl = "jdbc:oracle:thin:@//hostname:port/service_name";
String jdbcUrl = "jdbc:oracle:thin:@//localhost:1521/ORCL";

在这里插入图片描述

Oracle 12C的链接是什么呢

在这里插入图片描述

String jdbcUrl = "jdbc:oracle:thin:@hostname:port:SID";
String jdbcUrl = "jdbc:oracle:thin:@localhost:1521:ORCL";

我的代码是哪种!?

在这里插入图片描述

发现问题没

我的代码使用的是两种带着斜杠的这种写法

String jdbcUrl = "jdbc:oracle:thin:@//hostname:port/service_name";

所以oracle 12c 通过不了

解决问题

只要使用oracle 11g和12c 都可以用的方式即可!

代码

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;public class OracleJDBCExample {public static void main(String[] args) {// JDBC连接参数String jdbcUrl = "jdbc:oracle:thin:@localhost:1521:ORCL"; // 数据库连接字符串,格式为 jdbc:oracle:thin:@host:port:SIDString username = "XXX"; // 您的数据库用户名String password = "XXX"; // 您的数据库密码Connection connection = null;Statement statement = null;ResultSet resultSet = null;try {// 注册Oracle JDBC驱动程序Class.forName("oracle.jdbc.OracleDriver");// 建立数据库连接connection = DriverManager.getConnection(jdbcUrl, username, password);// 创建Statement对象用于执行SQL查询statement = connection.createStatement();// 执行SQL查询String sqlQuery = "SELECT * FROM your_table";resultSet = statement.executeQuery(sqlQuery);// 处理查询结果while (resultSet.next()) {// 从结果集中获取数据,例如:int id = resultSet.getInt("id");String name = resultSet.getString("name");// 在这里处理数据System.out.println("ID: " + id + ", Name: " + name);}} catch (ClassNotFoundException e) {e.printStackTrace();System.err.println("无法找到Oracle JDBC驱动程序,请确保驱动程序在类路径中。");} catch (SQLException e) {e.printStackTrace();System.err.println("数据库连接或查询失败。");} finally {try {// 关闭ResultSet、Statement和Connectionif (resultSet != null) resultSet.close();if (statement != null) statement.close();if (connection != null) connection.close();} catch (SQLException e) {e.printStackTrace();}}}
}
http://www.lryc.cn/news/143660.html

相关文章:

  • 嵌入式底层驱动需要知道的基本知识
  • 《软件开发的201个原则》阅读笔记 120-161条
  • JVM——类加载与字节码技术—类文件结构
  • C语言学习之main函数两个参数的应用
  • 本地部署 Stable Diffusion(Windows 系统)
  • Java源码分析(二)Double
  • 文件上传漏洞之条件竞争
  • javacv基础04-图像色彩空间转换函数Imgproc.cvtColor()(彩图转灰度图示例)
  • Spring Boot进阶(60):5种判断线程池任务是否全部完成的方案 | 实用技巧分享!
  • Git相关介绍和操作
  • IDEA配置热启动
  • 【附安装包】Fireworks CS6安装教程
  • 深度学习-4-二维目标检测-YOLOv3理论模型
  • 通俗理解DDPM到Stable Diffusion原理
  • 如何基于自己训练的Yolov5权重,结合DeepSort实现目标跟踪
  • C#_委托详解
  • R包开发-2.2:在RStudio中使用Rcpp制作R-Package(更新于2023.8.23)
  • 基于数据湖的多流拼接方案-HUDI实操篇
  • Spring MVC 四:Context层级
  • 【C++ 学习 ⑱】- 多态(上)
  • 合宙Air724UG LuatOS-Air LVGL API控件--进度条 (Bar)
  • 图神经网络与分子表征:番外——基组选择
  • rabbitmq笔记-rabbitmq客户端开发使用
  • 13.Oracle中nvl()与nvl2()函数详解
  • 设置某行被选中并滚动到改行
  • React钩子函数之useRef的基本使用
  • 无风扇迷你电脑信息与购买指南
  • 比特币是怎么回事?
  • vue3+ts+uniapp小程序端自定义日期选择器基于内置组件picker-view + 扩展组件 Popup 实现自定义日期选择及其他选择
  • Java进阶篇--泛型