ダイナミック・クエリの実行 : CacheQuery
Java クライアントは、CacheQuery クラスを介してデータベースに SQL 文字列を渡すことにより、Caché に対してダイナミック・クエリを実行することもできます。CacheQuery execute メソッドは、java.sql.ResultSet オブジェクトを返します。
以下のメソッドは、値が id の Contact プロパティと、値が type の PhoneNumberType プロパティを持つ、すべての PhoneNumber インスタンスの Number プロパティの値を選択するクエリを実行します。次に、このメソッドは、ResultSet を繰り返し処理して、それぞれの Number 値を表示します。
public class BindingExamples {
public static void displayPhoneNumbersByType(Database db,
String id, String type) throws CacheException, SQLException {
Id ID= new Id(id);
String SQL = "SELECT Number FROM JavaTutorial.PhoneNumber" +
" WHERE Contact='"+id +"' AND PhoneNumberType='" + type +"'";
CacheQuery query = new CacheQuery(db, SQL);
java.sql.ResultSet rs= query.execute();
while (rs.next()){
System.out.println(rs.getString(1));
}
}
}
Note:
Caché で PhoneNumber を表す SQL テーブルには、Contact 列が含まれています。この列には、Contact オブジェクトの ID 値が含まれます。これらの値は、各 PhoneNumber 行を Contact 行と関連付ける外部キーです。これについては、このチュートリアルの第 II 章で説明します。