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:SID
String 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和Connection
if (resultSet != null) resultSet.close();
if (statement != null) statement.close();
if (connection != null) connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}