Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在同一方法中执行两个不同的ResultSet对象_Java_Jdbc - Fatal编程技术网

Java 如何在同一方法中执行两个不同的ResultSet对象

Java 如何在同一方法中执行两个不同的ResultSet对象,java,jdbc,Java,Jdbc,我使用Oracle数据库运行JDBC,但是当它在同一个方法上执行查询时,它不会执行第二个方法 public class PRACTICE_4 { public static void main(String[] args) throws SQLException,ClassNotFoundException{ Scanner scn = new Scanner(System.in); String url = "jdbc:oracle:thin:@//

我使用Oracle数据库运行JDBC,但是当它在同一个方法上执行查询时,它不会执行第二个方法

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());
第二条语句不执行(打印)


它为我工作检查下面的代码

因为您使用的是别名为String的join F_name=rs.getString(“e.first_name”)应该是字符串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();

}
private void test()抛出SQLException、ClassNotFoundException{
类forName(“oracle.jdbc.driver.OracleDriver”);
String url=“jdbc:oracle:thin:@:”;
Connection con=DriverManager.getConnection(url,“,”);
PreparedStatement request=con.prepareStatement(“从请求中选择*,其中请求号=101”);
PreparedStatement book=con.prepareStatement(“从书店选择*);
ResultSet rs1=request.executeQuery();
while(rs1.next()){
System.out.println(“请求结果:+rs1.getString(“请求编号”)+,“+rs1.getString(“请求名称”));
}
rs1.close();
ResultSet rs2=book.executeQuery();
while(rs2.next()){
System.out.println(“cities语句结果:+rs2.getString(“SID”)+,“+rs2.getString(“SNAME”);
}
rs2.close();
}
结果:

Priting请求结果:101,请求987654321

Priting请求结果:101,Testcheckforunittest

定价请求结果:101,请求测试移动批准

定价请求结果:101103

Priting请求结果:101,测试秒空白

Priting请求结果:101,shreesh返回测试1支持

城市报表结果:100,商店1

城市报表结果:100,商店1

城市报表结果:100,商店1

城市报表结果:200,商店2


cities语句结果:200,store2

我猜您的意思是
close()而不是
colse()。目前,您的代码甚至无法编译(例如由于
rs.colse()
rs\u cities.colse()
)。请张贴实际代码。如果您使用的是Eclipse,编译错误还可能导致Eclipse运行以前成功编译的代码。如果您的代码抛出异常,请确保发布完整的异常堆栈跟踪。您是否注意到,
cities
是一个简单的语句,可以读取所有内容,而
语句
是一个更复杂的语句,涉及大量lof内部联接,可能导致它根本没有结果?
语句的问题实际上可能是:
语句.setString(1,““+scn.next()+”)-如果调用
setString()
,则不需要将参数用单引号括起来。您的代码正在向查询要查找的值添加单引号,我假设没有城市名称会用单引号括起来。Just
statement.setString(1,scn.next())应该足够了。
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();

}