2

データベースからデータを取得するための単純な Java Web アプリケーションを作成しようとしています。異なるデータベース テーブルに対していくつかの選択クエリを実行する必要があります。

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 つだけです。同じステートメントで複数のクエリを実行するにはどうすればよいですか?

4

2 に答える 2

5

おそらく、必要なクエリを配列に格納し、次のように反復処理できます。

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();
}

PS Connection、ResultSet、Statement オブジェクトを try...finally ブロックで囲んで、毎回close() できるようにすることをお勧めします。

于 2013-05-26T14:40:14.587 に答える
2

テーブルを結合し、1 つのクエリを実行してすべての結果を取得できないのはなぜですか? あなたのクエリは非常に最適化されていないようです。例として:

bookid = bid の書籍からタイトルを選択 bookid = bid の書籍から著者を
選択

1 つのクエリで簡単に実行できます。

bookid = bid の書籍からタイトル、著者を選択

于 2013-05-26T14:42:26.940 に答える