2013-05-26 31 views
1

我正在尝试编写简单的Java Web应用程序以从数据库获取数据。 我需要在不同的数据库表上运行几个select查询。如何使用相同的语句和结果集运行多个select查询?

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

可能需要帮助:http://stackoverflow.com/questions/1079 7794/multiple-queries-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(); 
} 

附:将你的Connection,ResultSet和Statement对象封装在try ... finally块中是一个好主意,以便确保你可以每次关闭()他们

+2

从Java 7开始,您可以使用* try-with-resources * – millimoose

+0

@ EmanuelSaringan您不觉得这种方法会带来任何性能开销吗? –

2

为什么你不能连接表并做1个查询来获得所有结果?您的查询似乎没有得到优化。举个例子:从书本其中BOOKID =从书本那里BOOKID =出价

可以很容易地在一个查询进行投标
选择auther

选择标题:

选择标题,bookid = bid的书的作者

相关问题