2015-07-15 1 views
1

Я пытаюсь понять последствия выполнения инструкции для соединения при обработке результатов выполнения другого оператора в том же соединении.Каково поведение выполнения инструкции в соединении перед закрытием другого оператора в том же соединении?

Возьмем такой пример:

public void doSomething(){ 
    Connection dbConnection = null; 
    PreparedStatement preparedStatement = null; 
    try { 
     dbConnection = getDBConnection(); 
     preparedStatement = dbConnection.prepareStatement("some sql"); 

     ResultSet rs = preparedStatement.executeQuery(); 

     while (rs.next()) { 

      //...do some stuff with the results 

      /* 
       pass the db connection so we don't create 
       too many connections to the database 
      */ 
      doSomethingElse(dbConnection); 
     } 

    } catch (SQLException e) { 
    } finally { 

     if (preparedStatement != null) { 
      preparedStatement.close(); 
     } 

     if (dbConnection != null) { 
      dbConnection.close(); 
     } 
} 


public void doSomethingElse(Connection dbConnection){ 
    PreparedStatement preparedStatement2 = null; 
    try { 
     //using the same connection from "doSomething" 
     preparedStatement2 = dbConnection.prepareStatement("some more sql"); 

     ResultSet rs2 = preparedStatement2.executeQuery(); 

     while (rs2.next()) { 

      //...do some stuff with the results 
     } 

    } catch (SQLException e) { 
    } finally { 

     if (preparedStatement2 != null) { 
      preparedStatement2.close(); 
     } 
    } 
} 

Мой главный вопрос заключается в следующем: Что такое поведение выполнения инструкции по соединению, прежде чем закрыть заявление, используя тот же связь? Вызывает ли какой-либо из результатов повреждение при выполнении другого оператора в том же соединении? Я знаю, что нет-нет делать что-то подобное, но что такое точное поведение? Или поведение непредсказуемо?

Я искал, но не смог найти ответ или пример этого в любом месте. Любое понимание или направление было бы замечательным.

ответ

2

В JDBC 3.0 спецификации состояний:

13.1.1 Создание заявления

... Каждый объект Connection может создать несколько объектов, которые могут себе быть использованы одновременно программой ...

+0

Вау, я действительно прочитал эту документацию и не видел этого. Я чувствую себя глупо. Спасибо @wero, вы спасатель – ccarnley7

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