在 Java 中获取错误"ORA-00942: table or view does not exist "



我正在尝试学习连接到oracle数据库

当我以这种方式登录 sqlplus 时:

sqlplus sys/Oracle_1@orcl as sysdba;

我运行以下代码:

connect hr/hr@orclpdb

select count(*) from employees;

我得到这个输出:

COUNT(*)
----------
107

但是当我尝试在我的 java 代码中访问此表时,出现此错误:

ORA-00942: table or view does not exist

这是我的Java代码:

class OracleCon{  
public static void main(String args[]){  
try{  
Class.forName("oracle.jdbc.driver.OracleDriver");  
Connection con=DriverManager.getConnection(  
"jdbc:oracle:thin:hr/hr@localhost:1521/orclpdb","sys as sysdba","Oracle_1"); 
Statement stmt=con.createStatement();  
ResultSet rs=stmt.executeQuery("select count(*) from employees");  
while(rs.next())  
System.out.println(rs.getInt(1)+"  "+rs.getString(2)+"  "+rs.getString(3));  
con.close();  
}catch(Exception e){ System.out.println(e);}  
}  
}  

我应该怎么做才能解决这个问题?

您正在尝试使用 Java 代码中的sys用户连接它,但表employee存在于hr架构中。

您可以更改:

//Change this line from
Connection con=DriverManager.getConnection(  
"jdbc:oracle:thin:hr/hr@localhost:1521/orclpdb","sys as sysdba","Oracle_1"); 
// to
Connection con=DriverManager.getConnection(  
"jdbc:oracle:thin:hr/hr@localhost:1521/orclpdb","hr","hr"); 

您可以更改从表employee获取数据的方式(使用表的架构查询表(

//Change this line from
ResultSet rs=stmt.executeQuery("select count(*) from employees"); 
//to
ResultSet rs=stmt.executeQuery("select count(*) from hr.employees"); 

干杯!!

请尝试此代码。这是必须工作的

public static void conn() throws ClassNotFoundException, SQLException{  
Connection con=DriverManager.getConnection(  
"jdbc:oracle:thin:@localhost:1521:orclpdb", "HR", "HR"); 
Statement stmt=con.createStatement();  
ResultSet rs=stmt.executeQuery("select count(*) from dual");  
while(rs.next())  
System.out.println(rs.getInt(1));  
con.close();
}

最新更新