用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();
}
}
------------------------------------------------------------------------------------------------------------
请教高手帮帮忙啊~
另外,在网上查说是创建同义词并赋权限,我也创建成功了,但是依然报上面的错误。
使用的
用户名: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();
}
}
------------------------------------------------------------------------------------------------------------
请教高手帮帮忙啊~
另外,在网上查说是创建同义词并赋权限,我也创建成功了,但是依然报上面的错误。
或者该用户有访问test表的权限没?
在你的查询语句中,把这个加上select t.*, t.rowid from sys.test t where t.id='1'!
你的JDBC中的用户,和你在plsql中使用的用户名不一样,权限也不一样,导致这样的问题~
----------------------------------------------------------
我用了 lin364653705的方法,但还是不可以。。
----------------------------------------------------------
mengxq,我在控制台,把权限中能加的选项都加了,但还是不可以。。
你看看是不是都有?
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。
我本机建了个与服务器同样实例名的数据库,
结果我连的是本机的数据库,用PL/SQL怎么看,那些表都有
汗死了
呵呵,感谢大家的帮助~