固定バイナリの使用
BINARY
文を使用して、固定バイナリ・フィールドを宣言できます。この場合、フィールドのサイズもバイトで指定する必要があります。その後、base64でエンコードされたバッファを使用して、フィールド値を読み書きします。ただし、バッファが指定したサイズと同じではない場合、フィールドに書き込む際にIllegalArgumentException
がスローされます。
ラージ・バイナリ・オブジェクトを格納する場合には、バイナリ・フィールドではなくLOB APIを使用する必要があります。
すべてのフィールド値が同じサイズである場合、バイナリ・データ型より優先して固定バイナリを使用する必要があります。固定バイナリは、配列のサイズを格納しておく必要がないため、コンパクトなストレージ形式です。バイナリ・データ型の情報は、バイナリの使用を参照してください。
主キーがUIDで2番目のフィールドに固定バイナリ・フィールドを持つシンプルな2つのフィールドの表を定義するには、次のDDL文を使用します。
CREATE TABLE myTable (
uid INTEGER,
myFixedByteArray BINARY(10),
PRIMARY KEY (uid)
)
バイナリ値では、DEFAULT
およびNOT NULL
制約はサポートされていません。
バイト配列に書き込むには、次のようにします。
var fixed64 = new Buffer('1234567890').toString('base64');
var row = {uid: 0,
myFixedByteArray: fixed64
};
store.put('myTable', row,
function (err) {
if (err)
throw err;
else {
console.log("Row inserted.");
}
});
固定バイナリ・フィールドを読み取るには、base64でエンコードされたバッファを使用します。
var primaryKey = {uid: 0};
store.get('myTable', primaryKey,
function (err, returnRow) {
if (err)
throw err;
else {
var fba = returnRow.currentRow.myFixedByteArray;
var buf =
new Buffer(fba, 'base64').toString('utf-8');
console.log(buf);
store.close();
}
});