2013-05-26 3 views
1

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

String queryOne = "select firstname from employees where empid = id"; 
String queryOne = "select title from books where bookid = bid"; 
String queryOne = "select auther from books where bookid = bid"; 

И я пытался сделать это следующим образом:

Connection connection = dataSource.getConnection(); 
Statement statement = connection.createStatement(); 
ResultSet rs1 = statement.executeQuery(queryOne); 

while (rs1.nest()) { 
String firstName = rs1.getString(1); 
} 
statement.close(); 
connection.close(); 

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

+1

May this help: http://stackoverflow.com/questions/1079 7794/multiple-queries-execute-in-java-in-single-statement –

+0

Я получаю такой источник данных: DataSource dataSource = (DataSource) context.lookup ("jdbc/DatabaseName"); Как добавить флаг allowMultipleQueries в эту строку? Спасибо. –

+2

Почему вас это волнует? Почему использование нескольких утверждений было бы плохо? –

ответ

4

Вы могли бы, возможно, хранить запросы, которые вы хотите в массиве и итерацию через него нравится:

Connection conn = dataSource.getConnection(); 
try { 
    Statement stmt = conn.createStatement(); 
    try { 
    for (String q : queries) { //queries is an array containing the 3 queries 
     ResultSet rset = statement.executeQuery(q); 
     try { 
     rset.getString(1); 
     } finally { 
     rset.close(); 
     } 
    } 
    } finally { 
    stmt.close(); 
    } 
} finally { 
    conn.close(); 
} 

P.S. Рекомендуется добавить объекты Connection, ResultSet и Statement в блок try ... finally, чтобы вы могли убедиться, что вы можете закрыть() их каждый раз.

+2

Начиная с Java 7, вы можете использовать * try-with-resources * – millimoose

+0

@ EmanuelSaringan. Вы не думаете, что с этим подходом будут какие-то издержки на производительность? –

2

Почему вы не можете присоединиться к таблицам и сделать 1 запрос, чтобы получить все результаты? Ваши запросы, кажется, очень неоптимизированы. В качестве примера:

выберите названия из книг, где BookID = ставка
выберите Автор развивает из книг, где BookID = ставка

можно легко сделать в одном запросе:

Выбор названия , автор из книг, где bookid = ставка

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