我正在尝试学习连接到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();
}