有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java语句。executeQuery返回没有行的结果集

我的问题是,当我直接向Oracle发出查询时,它会返回包含正确数据的行。但当我试图通过语句触发相同的查询时,它会给我一个没有行的结果集

我的代码如下:

public void sendSMStoMobile() {
        if (smsGatewayStatus.equals("STOPPED")) {
            stringBuilder.append("The control is returning" + "\n");
            jTextArea1.setText(stringBuilder.toString());
            return;
        }

        DBCP dbcp = DBCP.getInstance(database_url, username, password);
        Connection connection = null;
        Statement statement = null;
        try {
            connection = dbcp.getConnection();
            statement = connection.createStatement();
        } catch (SQLException ex) {
            Logger.getLogger(Send_SMS_Form.class.getName()).log(Level.SEVERE, null, ex);
            System.out.println("Message : " + ex.getMessage());
        } catch (InterruptedException ex) {
            Logger.getLogger(Send_SMS_Form.class.getName()).log(Level.SEVERE, null, ex);
            System.out.println("Message : " + ex.getMessage());
        }

        ResultSet resultSet = null;

        try {
            sql = new StringBuffer();
            sql.append("SELECT SMS_ID, MOBILE_NO, SMS_CONTENT ");
            sql.append("FROM SMSDATA.SMS_DATA ");
            //sql.append("WHERE SENT_STATUS = 'N' AND Message_Code IN('LOANREPAY') " );
            //sql.append("WHERE SENT_STATUS = 'N' AND Message_Code IN('SPECIAL') " );
            sql.append("WHERE SENT_STATUS = 'N' ");
            //sql.append("WHERE tranum <= (select max(tranum) -25 from smsgtway.sms_all_tran where SENT_STATUS = 'N' AND Message_Code IN('MEMDEP','MEMGRANT','SAMGRANT'))  and SENT_STATUS = 'N' AND Message_Code IN('MEMDEP','MEMGRANT','SAMGRANT') " );
            sql.append("ORDER BY SMS_ID desc ");
            // sql.append("ORDER BY SENT_TIMSTAMP " );

            //  For Test
            //sql.append("SELECT  customer_Code,MOBILE_NO, SMS_CONTENT,SMS_ID " );
            //sql.append("FROM MB_SMS_DTL ");
            //sql.append("WHERE SENT_STATUS = 'N' ");
            //sql.append("ORDER BY SMS_ID " );
            // End Test
            resultSet = statement.executeQuery(sql.toString());

            System.out.println("Code comes here");
            /*   if(!resultSet.next()){ 
             stringBuilder.append("No Data Found" +"\n");
             jTextArea1.setText(stringBuilder.toString());
             } */


            if (!resultSet.next()) {
                System.out.println("no data");
            } else {

                System.out.println("Data Found...");
                do {
                    //statement(s)
                } while (resultSet.next());
            }
            while (resultSet.next()) {

                System.out.println("Data Found...");
                String smsId = resultSet.getString(1);
                String destMobileNo = resultSet.getString(2);
                String message = resultSet.getString(3);
                OutboundMessage sms = new OutboundMessage(destMobileNo, message);

                System.out.println("Code comes here" + smsId);
                //System.out.println("sms = " + sms);
                try {
                    Service.getInstance().sendMessage(sms);
                } catch (TimeoutException timeoutException) {
                    System.out.println("1");
                    stringBuilder.append("Exception : " + timeoutException.getMessage() + "\n");
                    jTextArea1.setText(stringBuilder.toString());
                } catch (GatewayException gatewayException) {
                    System.out.println("2");
                    stringBuilder.append("Exception : " + gatewayException.getMessage() + "\n");
                    jTextArea1.setText(stringBuilder.toString());
                } catch (IOException iOException) {
                    System.out.println("3");
                    stringBuilder.append("Exception : " + iOException.getMessage() + "\n");
                    jTextArea1.setText(stringBuilder.toString());
                } catch (InterruptedException interruptedException) {
                    System.out.println("4");
                    stringBuilder.append("Exception : " + interruptedException.getMessage() + "\n");
                    jTextArea1.setText(stringBuilder.toString());
                } catch (java.lang.StringIndexOutOfBoundsException siobe) {
                    System.out.println("5");
                    stringBuilder.append("Exception : " + siobe.getMessage() + "\n");
                    jTextArea1.setText(stringBuilder.toString());
                }

                //Update Table After Send Message
                String updateQuery = "UPDATE SMSDATA.SMS_DATA SET SENT_STATUS = 'Y', SENT_DATE = sysdate WHERE SMS_ID = " + smsId;
                //String updateQuery = "UPDATE MB_SMS_DTL SET SENT_STATUS = 'Y' WHERE SMS_ID = " + tranNumber ;

                //System.out.println("Update Query: " + updateQuery);
                if (i < 10) {
                    System.out.print(smsId + ": Y, ");
                }
                if (i == 10) {
                    System.out.print(smsId + ": Y, " + "\n");
                    i = 0;
                }
                statement.executeUpdate(updateQuery);
                connection.commit();
                i = i + 1;
            }
        } catch (Exception e) {
            System.out.println("Message: " + e.getMessage());
            System.out.println("Cause: " + e.getCause());
            stringBuilder.append("Message: " + e.getMessage() + "\n");
            stringBuilder.append("Cause: " + e.getCause() + "\n");
            jTextArea1.setText(stringBuilder.toString());
            e.printStackTrace();
        } finally {
            if (resultSet != null) {
                try {
                    resultSet.close();
                } catch (SQLException ex) {
                    Logger.getLogger(Send_SMS_Form.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
            if (statement != null) {
                try {
                    statement.close();
                } catch (SQLException ex) {
                    Logger.getLogger(Send_SMS_Form.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
            dbcp.releaseConnection(connection);
            //Service.getInstance().stopService();
        }
    }

当我调用这个函数时,控制台中会打印“无数据”。sql是正确的。在Toad中运行sql时,我找到了两行

请帮帮我


共 (0) 个答案