gpt4 book ai didi

java - 我无法可视化位于 java 容器中的 Oracle 库中的表

转载 作者:行者123 更新时间:2023-12-02 01:05:45 24 4
gpt4 key购买 nike

下午好,
我遇到了一个相当奇怪的问题。我无法从 Java 中可视化 Oracle 数据库中使用 Docker 容器安装的表。从 SQL Developer 中,我可以连接并且一切正常,我可视化了我的表,但是当从 java 执行此操作时,我收到一个错误,表明未找到该表:

主类:

package BaseDeDatos;

import java.sql.ResultSet;
import java.sql.SQLException;

public class Conexion {

public static void main(String[] args) {
MyConexion conexion=new MyConexion();
ResultSet resultado;
String cedula,nombre, apellido;

resultado=conexion.getQuery("Select * from Cliente");

try {
while(resultado.next()){
cedula = resultado.getString("cedula");
nombre = resultado.getString("nombre");
// apellido = resultado.getString("apellido");

System.out.println("Nombre: "+cedula+"\nRut: "+nombre);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

我访问数据库的配置

package BaseDeDatos;

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

public class MyConexion {

private String user = "cesar";
private String password = "xxxxxxx123";

static String url = "jdbc:oracle:thin:@//10.164.7.203:1521/ORCLPDB1.localdomain";
private Connection conn = null;

public MyConexion() {
try {
Class.forName("oracle.jdbc.OracleDriver");
conn = (Connection) DriverManager.getConnection(url, user, password);

if (conn != null) {
System.out.println("Conexion a base de datos " + url + " . . . Ok");
}
}
catch (SQLException ex) {
System.out.println("Hubo un problema al intentar conecarse a la base de datos" + url);
}
catch (ClassNotFoundException ex) {
System.out.println("Error... " + ex);
}
}

/**
* Consultas a la Base de Datos.
*
* @param _query
* @return
*/
public ResultSet getQuery(String _query) {
Statement state = null;
ResultSet resultado = null;
try {
state = (Statement) conn.createStatement();
resultado = state.executeQuery(_query);
}
catch (SQLException e) {
e.printStackTrace();
}
return resultado;
}
}

当我尝试从 java 连接时:

enter image description here

在 SQL Developer 中执行查询:

enter image description here

我与 SQL Developer 的正确连接的详细信息:

enter image description here

运行时:

select owner, table_name from all_tables where table_name = 'CLIENTE';
select * from dba_tab_privs where table_name = 'CLIENTE' and privilege = 'SELECT';

enter image description here

它可能是什么?我不明白

最佳答案

Oracle 错误有时可能会产生误导。您还会收到此 Oracle 错误代码...

ORA-00942: table or view does not exist

当表确实存在但用户无权访问该表时。
换句话说,用户 cesar 无权访问数据库表 CLIENTE

顺便说一下,根据您发布的内容,似乎有两个 CLIENTE 表。一种位于 SYS 架构中,另一种位于 SYSTEM 架构中。 This Stack Exchange 问答描述了架构之间的差异,并建议不要在这些架构中创建用户表。因此,我建议在 cesar 架构中创建表 CLIENTE。这样您就不会收到 ORA-00942 错误。如果您不能这样做,那么您需要向用户 cesar 授予对表 CLIENTE 的访问权限,如下所示

GRANT SELECT ON CLIENTE TO cesar

请注意,您需要以表的所有者身份执行上述语句,例如首先以SYSTEM身份连接到数据库,然后执行上面的语句。请记住,用户 cesar 随后需要以 SYSTEM.CLIENTE 身份访问该表。

select * from SYSTEM.CLIENTE

关于java - 我无法可视化位于 java 容器中的 Oracle 库中的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60084248/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com