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();}}}
}