java.sql.SQL语法错误异常 : ORA-00942: table or view does not exist

标签 java oracle

当我尝试使用以下代码从 Oracle 数据库读取数据时出现异常

ResultSet res=stmt.executeQuery("select * from food");

但是当我在命令提示符下直接使用这个命令时,这个表实际上存在于我的数据库中,它工作正常。而且对于数据库中表中的一个表,这个代码工作正常,但对于其他表名它不起作用正确。所以有人请解释为什么会这样。

java.sql.SQLSyntaxErrorException: ORA-00942: table or view does not exist

    at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:440)
    at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:396)
    at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:837)
    at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:445)
    at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:191)
    at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:523)
    at oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:193)
    at oracle.jdbc.driver.T4CStatement.executeForDescribe(T4CStatement.java:852)
    at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1153)
    at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1275)
    at oracle.jdbc.driver.OracleStatement.executeQuery(OracleStatement.java:1477)
    at oracle.jdbc.driver.OracleStatementWrapper.executeQuery(OracleStatementWrapper.java:392)
    at connecttooracle.ConnectOracle.main(ConnectOracle.java:67)

我正在通过 Toad 访问食物表中的数据。那么为什么我会在 java 中收到此错误?

我的完整代码是:

public class ConnectOracle {

 public static void main(String[] args) {

  String driver = "oracle.jdbc.driver.OracleDriver"; //

  String serverName = "10.11.201.84";
  String portNumber = "1521";
  String db = "XE";
  String url = "jdbc:oracle:thin:@" + serverName + ":" + portNumber + ":"
    + db; // connectOracle is the data
  // source name
  String user = "ORAP"; // username of oracle database
  String pwd = "ORAP"; // password of oracle database
  Connection con = null;
  ServerSocket serverSocket = null;
  Socket socket = null;
  DataInputStream dataInputStream = null;
  DataOutputStream dataOutputStream = null;

  try {
   Class.forName(driver);// for loading the jdbc driver

   System.out.println("JDBC Driver loaded");

   con = DriverManager.getConnection(url, user, pwd);// for
                // establishing
   // connection
   // with database
   Statement stmt = (Statement) con.createStatement();

   serverSocket = new ServerSocket(8888);
   System.out.println("Listening :8888");

   while (true) {
    try {

     socket = serverSocket.accept();
     System.out.println("Connection Created");
     dataInputStream = new DataInputStream(
       socket.getInputStream());
     dataOutputStream = new DataOutputStream(
       socket.getOutputStream());
     System.out.println("ip: " + socket.getInetAddress());
     // System.out.println("message: " +
     // dataInputStream.readUTF());

     ResultSet res=stmt.executeQuery("select * from food");
     while(res.next()){
      System.out.println(res.getString(1));
     }

    } catch (IOException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    }

    if (dataInputStream != null) {
     try {
      dataInputStream.close();
     } catch (IOException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
     }
    }

    if (dataOutputStream != null) {
     try {
      dataOutputStream.close();
     } catch (IOException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
     }
    }
   }
  } catch (Exception e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 }
}

最佳答案

如果您的表位于架构 A 下:

select * from A.food

编辑

如果您可以使用 ORAP 用户通过 TOAD 登录并执行相同的查询(select * from food),那么您肯定拥有 ORAP 模式中的表。我认为“select * from ORAP.food”没有理由失败。

关于java.sql.SQL语法错误异常 : ORA-00942: table or view does not exist,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36911453/

相关文章:

oracle - Oracle 是否具有与 Postgres 的 text_pattern_ops opclass 等效的功能?

mysql - 选择最佳输出

sql - 安全检查 : How to restrict the # of rows affected in an Oracle Update/Delete query?

sql - ORACLE GROUP BY 错误

java - 获取异常 java.sql.SQLException : socket creation error

java - 根据每天创建的时间戳更新和插入大量 SQL 行的最佳方法是什么?

java - 升级到 JRE 1.7.0_13 后小程序类名称错误

java - 在 Jersey POST 处理程序中注入(inject) HttpServletRequest

java - BeanUtils.copyProperties 缺少深度嵌套变量?

java - 是什么原因导致 "Can' t find Symbol”以及如何解决?