java :table or view does not exist

maggiehexu 2010-01-07 04:13:26
用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();
}
}
------------------------------------------------------------------------------------------------------------
请教高手帮帮忙啊~
另外,在网上查说是创建同义词并赋权限,我也创建成功了,但是依然报上面的错误。
...全文
271 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
maer56 2010-01-11
  • 打赏
  • 举报
回复
我佩服你老人家。哈哈,我也经常这样。
maggiehexu 2010-01-11
  • 打赏
  • 举报
回复
最后是由于我连错数据库了。。。。
我本机建了个与服务器同样实例名的数据库,
结果我连的是本机的数据库,用PL/SQL怎么看,那些表都有。。。
汗死了。。。
呵呵,感谢大家的帮助~
liguangwen86 2010-01-08
  • 打赏
  • 举报
回复
帮顶
crazylaa 2010-01-08
  • 打赏
  • 举报
回复
怀疑你的工具问题,导致表名加双引号了。
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。
maer56 2010-01-07
  • 打赏
  • 举报
回复
有两个权限 , resources,connect
你看看是不是都有?
maggiehexu 2010-01-07
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 maer56 的回复:]
里面有test的表么?
或者该用户有访问test表的权限没?
[/Quote]
我使用abc的normal权限登陆PL/SQL,创建的test表,
----------------------------------------------------------
我用了 lin364653705的方法,但还是不可以。。
----------------------------------------------------------
mengxq,我在控制台,把权限中能加的选项都加了,但还是不可以。。
lin364653705 2010-01-07
  • 打赏
  • 举报
回复
你看下plsql当中,你用户DBA登陆一下,你看下你的test表,前面有个前缀,比如说sys.test或者其他
在你的查询语句中,把这个加上select t.*, t.rowid from sys.test t where t.id='1'!
你的JDBC中的用户,和你在plsql中使用的用户名不一样,权限也不一样,导致这样的问题~
mengxq 2010-01-07
  • 打赏
  • 举报
回复
表或视图不存在,
估计是用户没有权限
maer56 2010-01-07
  • 打赏
  • 举报
回复
里面有test的表么?
或者该用户有访问test表的权限没?

67,515

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧