用pl/sql连接数据库并查询,结果是正确的。
使用的
用户名:abc
密码:abc
均是以normal权限登陆的,
但是用jdbc进行查询的时候就是报错(连接是成功的):
 数据库连接成功!
java.sql.SQLException: ORA-00942: table or view does not exist at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:125)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:305)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:272)
at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:623)
at oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:112)
at oracle.jdbc.driver.T4CStatement.execute_for_describe(T4CStatement.java:351)
at oracle.jdbc.driver.OracleStatement.execute_maybe_describe(OracleStatement.java:896)
at oracle.jdbc.driver.T4CStatement.execute_maybe_describe(T4CStatement.java:383)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:986)
at oracle.jdbc.driver.OracleStatement.executeQuery(OracleStatement.java:1125)
at com.geoway.test.ConnTest.<init>(ConnTest.java:20)
at com.geoway.test.ConnTest.main(ConnTest.java:44)以下是代码:
public void ConnTest(){
try {
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
String url="jdbc:oracle:thin:@192.168.1.254:1521:db10g";
String user="abc";
String password="abc";
Connection conn= DriverManager.getConnection(url,user,password);
System.err.println(" 数据库连接成功!");
String sql = "select t.*, t.rowid from test t where t.id='1'";
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql);
while(rs.next()){
String name = rs.getString("NAME");
System.err.println("结果 name = "+name);
}
stmt.close();
conn.close();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
------------------------------------------------------------------------------------------------------------
请教高手帮帮忙啊~
另外,在网上查说是创建同义词并赋权限,我也创建成功了,但是依然报上面的错误。

解决方案 »

  1.   

    里面有test的表么?
    或者该用户有访问test表的权限没?
      

  2.   

    你看下plsql当中,你用户DBA登陆一下,你看下你的test表,前面有个前缀,比如说sys.test或者其他
    在你的查询语句中,把这个加上select t.*, t.rowid from sys.test t where t.id='1'!
    你的JDBC中的用户,和你在plsql中使用的用户名不一样,权限也不一样,导致这样的问题~
      

  3.   

    我使用abc的normal权限登陆PL/SQL,创建的test表,
    ----------------------------------------------------------
    我用了 lin364653705的方法,但还是不可以。。
    ----------------------------------------------------------
    mengxq,我在控制台,把权限中能加的选项都加了,但还是不可以。。
     
      

  4.   

    有两个权限 , resources,connect
    你看看是不是都有?
      

  5.   

    怀疑你的工具问题,导致表名加双引号了。
    String sql = "select t.*, t.rowid from test t where t.id='1'"; 
    -》
    String sql = "select t.*, t.rowid from \"test\" t where t.id='1'"; try again。
      

  6.   

    最后是由于我连错数据库了。
    我本机建了个与服务器同样实例名的数据库,
    结果我连的是本机的数据库,用PL/SQL怎么看,那些表都有
    汗死了
    呵呵,感谢大家的帮助~