JDBC JAVA SE应用程序无法读取ORACLE R12中的所有表

时间:2016-12-21 11:49:49

标签: java oracle jdbc

我在SQL开发人员中为Oracle R12数据库创建了一个SQL查询,该查询工作正常。有几个表/视图。所有这些对象都可以在我使用的LOGIN和PASSWORD下访问。

我使用JDBC驱动程序创建了一个旧的JAVA SE应用程序,并尝试从同一个源(数据库)中选择数据。它仅适用于某些对象(表,视图)。提到SQL查询我使用8个表,4个不工作(不是错误,只是空白数据)。

  

没有找到数据(没有错误,似乎他无法从该表/视图中读取任何行)

我有以下代码

    try {
        String query = "SELECT status_name FROM APPS.WSH_DELIVERABLE_TRIPS_V WHERE TRUNC(CREATION_DATE) = TRUNC(SYSDATE)";

        //Database.getConnection().setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);

        PreparedStatement prep = Database.getConnection().prepareStatement(query, Statement.RETURN_GENERATED_KEYS);
        // prep.setInt(1, delivery);
        ResultSet rs = prep.executeQuery();

        ResultSetMetaData c = rs.getMetaData(); 

        System.out.println("COLUMNS: " + c.getColumnCount());

        System.out.println("RS " + rs.next());

        //System.out.println("FIRST: " + String.valueOf(rs.first()));
        //createStatement(java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY);

        while (rs.next()) {
            dataFound = true;
            // textInfo.setText("Data was found!!!!!!!!!!!!!!!!!!!!!!");
            //textInfo.setText(rs.getString(1) + " - " + rs.getString(2) + " - " + rs.getString(3));
            //String test = String.valueOf(rs.getString("status_name")) + textInfo.getText();
            textInfo.setText(String.valueOf(rs.getString(1)));
        }

        if (dataFound) {
            loadingImg.setVisible(false);
        } else {
            loadingImg.setVisible(false);
            textInfo.setText("No data found.");
        }
    } catch (SQLException e) {
        ExceptionWindow excep = new ExceptionWindow(e); //Show error Window
    }

1 个答案:

答案 0 :(得分:0)

我认为你在这一行有问题

PreparedStatement prep = Database.getConnection().prepareStatement(query, Statement.RETURN_GENERATED_KEYS);

Connection包含prepareStatement()的不同重载方法。您使用了以下方法。

  

prepareStatement(String sql,int autoGeneratedKeys)

     

创建一个默认的PreparedStatement对象,该对象具有检索自动生成的键的功能。

此方法应用于插入目的,而不是用于选择。我相信如果您使用以下方法,那么您将获得预期的结果。

  

prepareStatement(String sql)

     

创建PreparedStatement对象,以便将参数化SQL语句发送到数据库。