2016-04-26 9 views
0

私はJDBCを初めて使用しており、シンタックスについて少し混乱しています。複数のクエリ(またはSQLでのビュー)を作成し、その後のクエリを作成するためにビューを参照したいとします。プリペアドステートメントでどのように行うのですか?例えばJDBCプリペアドステートメント/別のプリペアドステートメントで準備されている参照

:は今、私は以下を作成しようとしています、クエリで「最初の」「のPreparedStatement」の参照を渡すことができ

PreparedStatement first = conn.PreparedStatement("SELECT * FROM clients); 
first.execute() 

質問?

PreparedStatement second = conn.PreparedStatement("SELECT * FROM first WHERE age > 10); 
+0

いいえ、あなたは降りています。 'PreparedStatement'はビューとは関係ありません。それは確かにデータベースにビューを作成しません。基礎を説明し、それを何度か読んだチュートリアルを見つけてください。 – Kayaman

+0

しかし、準備されたステートメントによって生成されたクエリを別のステートメントでどのように使用するのですか?あなたはこれを説明する良いチュートリアルを知っていますか? – cuziluvtosmile

+0

"prepared prepared statementによって生成されたクエリ"は使用しません。 'PreparedStatements'は' ResultSets'を生成したり、データベースにデータを挿入/更新したりします。チュートリアルでは、基本について書いている限り、すべてのチュートリアルを実行します。 – Kayaman

答えて

0

JDBCのための最も簡単なパターンは次のとおりです。

try (PreparedStatement first = conn.prepareStatement(
     "SELECT * FROM clients WHERE age BETWEEN ? AND ?")) { 
    first.setInt(1, 80); 
    first.setInt(2, 140); 
    try (ResultSet rs = first.executeQuery()) { 
     while (rs.next()) { 
      int age = rs.getInt("age"); 
      ... 
     } 
    } 
} 

この構文:トライで資源あなたが戻るか、または例外がスローされた場合でも、firstrsを閉じます。

そして、第1と第2の文は完全に独立しています。

準備されたステートメントをデータベースセッション全体で開いたままにする必要はありません。

実行は、SELECTの場合はexecuteQuery、ResultSetが返されない場合はUPDATE/INSERTの場合はexecuteUpdateによってトリガされるのが最適です。

関連する問題