ResultSet からの JSON 文書の取得
リレーショナル表を照会し、それによって取得した ResultSet を、JSON 形式でデータを保持する com.ibm.db2.jcc.json.DB2JSONResultSet オブジェクトに変換することができます。 DB2JSONResultSet オブジェクトを作成した後は、そのオブジェクトに対してメソッドを使用して、JSON 文書または JSON スニペットを取得できます。
プロシージャー
ResultSet オブジェクトから JSON 文書または JSON スニペットを取得するには、以下の手順を実行します。
例
以下の例でステートメントの右にある番号は、前述のステップに対応しています。
例: DB2JSONResultSet.getCurrentRow を使用して、JSON 文書の行を一度に 1 つずつ取得します。
sql = "SELECT EMPNO, SALARY FROM EMPLOYEE";
ResultSet rs =
stmt.executeQuery(sql); 1
// ResultSet contains a CHAR
// and a DECIMAL column
DB2JSONResultSet jsonrs = ((DB2ResultSet) rs).toJSONResultSet(); 2
// DB2JSONResultSet contains
// String and Number fields
while(jsonrs.next()) {
String row = json.getCurrentRow(); 3
…
// Process row
}
jsonrs.close(); // Close the DB2JSONResultSet 4
例: DB2JSON.toJSONString を使用して、JSON 文書全体を String に取り込みます。
sql = "SELECT EMPNO, PHONENO FROM EMPLOYEE";
ResultSet rs =
stmt.executeQuery(sql); 1
// ResultSet contains a CHAR
// and a DECIMAL column
DB2JSONResultSet jsonrs = ((DB2ResultSet) rs).toJSONResultSet(); 2
// DB2JSONResultSet contains
// String and Number fields
String jsondoc = json.toJSONString(); 3
…
// Process contents of string
jsonrs.close(); // Close the DB2JSONResultSet 4
例: DB2JSONResultSet.getAsciiStream を使用して、JSON 文書を AsciiStream に読み込みます。
sql = "SELECT EMPNO, PHONENO FROM EMPLOYEE";
ResultSet rs =
stmt.executeQuery(sql); 1
// ResultSet contains a CHAR
// and a DECIMAL column
DB2JSONResultSet jsonrs = ((DB2ResultSet) rs).toJSONResultSet(); 2
// DB2JSONResultSet contains
// String and Number fields
InputStream is = jsonrs.getAsciiStream(); 3
char [] buff = new char [1024];
int b = 0;
do { // Read and print AsciiStream contents
b = is.read ();
if (b > 0) {
System.out.print ((char)b);
}
} while (b > 0);
is.close();
jsonrs.close(); // Close the DB2JSONResultSet 4
例: DB2JSONResultSet.getCharacterStream を使用して、JSON 文書全体を文字ストリームに取り込みます。 その後、文書の内容を読み取ってバッファーに入れ、印刷します。
sql = "SELECT EMPNO, PHONENO FROM EMPLOYEE";
ResultSet rs =
stmt.executeQuery(sql); 1
// ResultSet contains a CHAR
// and a DECIMAL column
DB2JSONResultSet jsonrs = ((DB2ResultSet) rs).toJSONResultSet(); 2
// DB2JSONResultSet contains
// String and Number fields
Stream reader = jsonrs.getCharacterStream (); 3
char [] buff = new char[1024];
int len = 0;
do { // Read and print CharacterStream contents
len = reader.read(buff);
if (len > 0) {
System.out.println(String.copyValueOf(buff,0,len));
}
}
reader.close();
jsonrs.close(); // Close the DB2JSONResultSet 4