Как выполнить два разных объекта ResultSet одним и тем же методом - PullRequest
0 голосов
/ 15 октября 2019

Я запускаю JDBC с базой данных Oracle, но когда он выполняет запросы по тому же методу, он не выполняет второй.

public class PRACTICE_4 {

    public static void main(String[] args) throws SQLException,ClassNotFoundException{
        Scanner scn = new Scanner(System.in);

        String url = "jdbc:oracle:thin:@//localhost:1521/xe";
        Connection con = DriverManager.getConnection(url,"hr","oracle");



        PreparedStatement statement = con.prepareStatement("SELECT  e.first_name, e.last_name,d.department_name,l.city \n" + 
                                                            "FROM employees e\n" + 
                                                            "JOIN departments d\n" + 
                                                            "ON (e.department_id = d.department_id)\n" + 
                                                            "JOIN locations l\n" + 
                                                            "ON (d.location_id = l.location_id)"

                                                            + "WHERE l.city = ?"
                                                            + "AND e.employee_id = ?");

        PreparedStatement cities = con.prepareStatement("SELECT city FROM locations");

        try {

Первый оператор успешно завершается

            System.out.println("Please introduce one of the following cities:");
            ResultSet rs_cities = cities.executeQuery();

            while(rs_cities.next()) {System.out.print(rs_cities.getString("city") + " | ");}
            System.out.println();
            rs_cities.colse();
            statement.setString(1,"'" + scn.next() + "'");

            System.out.println("Please introduce a an employee ID");
            statement.setInt(2,scn.nextInt());

Второй оператор не выполняется (печать)

            ResultSet rs = statement.executeQuery();
            while(rs.next()) {
            String F_name = rs.getString("e.first_name");
            String L_name = rs.getString("e.last_name");
            String D_name = rs.getString("d.department_name");
            String C_name = rs.getString("l.city");

                System.out.println(F_name + "\t" + L_name  + "\t" + D_name  + "\t" + C_name );

            }

            rs.colse();

        }catch(Exception e) {
            e.printStackTrace();
        }

        }


    }
}

1 Ответ

1 голос
/ 16 октября 2019

Для меня это сработало, проверьте приведенный ниже код.

Поскольку вы используете соединение с псевдонимом String F_name = rs.getString ("e.first_name"); должно быть String F_name = rs.getString ("first_name");

private void test() throws SQLException, ClassNotFoundException {

    Class.forName("oracle.jdbc.driver.OracleDriver");
    String url = "jdbc:oracle:thin:@<host>:<port>:<sid>";
    Connection con = DriverManager.getConnection(url, "<username>", "<pass>");

    PreparedStatement request = con.prepareStatement("Select * from request where request_number = 101");
    PreparedStatement book = con.prepareStatement("Select * from book_store");

    ResultSet rs1 = request.executeQuery();
    while (rs1.next()) {
        System.out.println("Priting request result : " + rs1.getString("REQUEST_NUMBER") + ", " + rs1.getString("REQUEST_NAME"));
    }

    rs1.close();
    ResultSet rs2 = book.executeQuery();

    while (rs2.next()) {
        System.out.println("cities statement result : " + rs2.getString("SID") + ", " + rs2.getString("SNAME"));
    }

    rs2.close();

}

Результат:

Результат запроса печати: 101, Req987654321

Результат запроса печати:101, Testcheckforunittest

Результат запроса на печать: 101, Req_TestMobileApproval

Результат запроса на печать: 101, demo103

Результат запроса на печать: 101, пустое время проверки

Результат запроса на печать: 101, shreshh return test1 sup

результат выписки по городам: 100, store1

результат выписки по городам: 100, store1

результат выписки по городам: 100, store1

результат выписки по городам: 200, store2

результат выписки по городам: 200, store2

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...