2013-12-15 3 views
0

Когда я пытаюсь запустить это, в нем говорится, что «Операция не может быть запущена по завершении набора результатов».Выполнение двух разных запросов MySQL в одном классе JAVA

public void multiplequeries() throws Exception{ 
    //try{ 
    //This will load the MySQL Driver, each DB has its own driver 
    Class.forName("com.mysql.jdbc.Driver"); 
    //Setup the connection with the database 
    connect = (Connection) DriverManager 
      .getConnection("....these details are correct...."); 

    try(Statement stmt = connect.createStatement()) 
    { 
     /*COUNT(*) should be used instead of * but it is not necessary*/ 

     String query = "select * from course where dept_name='Comp. Sci.'"; 
     ResultSet resultSet = stmt.executeQuery(query); 
     int i=0; 

     while (resultSet.next()) 
     { 
      i=i+1; 
     } 

     System.out.println("The Total number of courses are: " + i); 
    } 
} 

Теперь у меня есть еще один запрос, который нужно запустить. Он использует разные таблицы, и результат также отличается.

select ID, COUNT(DISTINCT course_id) as coursecount 
from teaches as t natural join instructor as i 
where i.dept_name = 'Comp. Sci.' 
group by ID 

Он возвращает количество курсов, преподаваемых инструкторами.

В схемы являются следующие:

course (**course_id**, title, dept_name, credits) 
teaches (**ID**, **course_id**, **sec_id**, **semester**, **year**) 
instructor (**ID**, name, dept_name, salary) 
+1

Пожалуйста, пост трассировки стека. –

+1

Я почти уверен, что ошибка не исходит из кода, который вы опубликовали. –

ответ

-1

Закрыть ResultSet перед тем выполнить следующий запрос

public void multiplequeries() throws Exception{ 
//try{ 
//This will load the MySQL Driver, each DB has its own driver 
Class.forName("com.mysql.jdbc.Driver"); 
//Setup the connection with the database 
connect = (Connection) DriverManager 
     .getConnection("....these details are correct...."); 

try(Statement stmt = connect.createStatement()) 
{ 
    /*COUNT(*) should be used instead of * but it is not necessary*/ 

    String query = "select * from course where dept_name='Comp. Sci.'"; 
    ResultSet resultSet = stmt.executeQuery(query); 
    int i=0; 

    while (resultSet.next()) 
    { 
     i=i+1; 
    } 
    resultSet.close(); 
    System.out.println("The Total number of courses are: " + i); 
} 
} 
+0

Что это изменится? –

+0

Я закрываю весь класс правильно? Теперь, чтобы выполнить второй, я должен объявить новый класс. Я не хочу этого. В нем говорится: «Операция не разрешается после закрытия ResultSet». Что мне теперь делать? –

+0

first close result set before System.out.println ("Общее количество курсов:" + i); – Hammad

Смежные вопросы