BINARY
文を使用して、フィールドをバイナリとして宣言できます。次に、Javaバイト配列を使用してフィールド値を読取りおよび書込みします。
ラージ・バイナリ・オブジェクトを格納する場合には、バイナリ・フィールドではなくLOB APIを使用する必要があります。LOB APIの使用に関する情報は、『Oracle NoSQL APIラージ・オブジェクトAPI』の概要を参照してください。
すべてのフィールド値が同じサイズであることがわかっている場合、バイナリ・データ型より優先して固定バイナリを使用してください。固定バイナリは、配列のサイズを格納しておく必要がないため、コンパクトなストレージ形式です。固定バイナリ・データ型の詳細は、固定バイナリの使用を参照してください。
主キーがUIDで2番目のフィールドがバイナリ・フィールドを持つシンプルな2つのフィールドの表を定義するには、次の文を使用します。
CREATE TABLE myTable ( uid INTEGER, myByteArray BINARY, PRIMARY KEY(uid) )
バイナリ値では、CHECK
、DEFAULT
およびNOT NULL
制約はサポートされていません。
バイト配列を書き込むにはRow.put()
を使用します。
TableAPI tableH = kvstore.getTableAPI(); Table myTable = tableH.getTable("myTable"); Row row = myTable.createRow(); row.put("uid", 12345); String aString = "The quick brown fox."; try { row.put("myByteArray", aString.getBytes("UTF-8")); } catch (UnsupportedEncodingException uee) { uee.printStackTrace(); } tableH.put(row, null, null);
バイナリ・フィールドを読み込むにはRow.get().asBinary()
を使用します。これにより、BinaryValue
クラス・インスタンスが返されます。次にBinaryValue.get()
を使用して格納されているバイト配列を取得できます。
次に例を示します。
TableAPI tableH = kvstore.getTableAPI(); Table myTable = tableH.getTable("myTable"); /* Create a primary key for user id 12345 and get a row */ PrimaryKey key = myTable.createPrimaryKey(); key.put("uid", 12345); Row row = tableH.get(key, null); byte[] b = row.get("myByteArray").asBinary().get(); String aString = new String(b); System.out.println("aString: " + aString);