固定バイナリの使用

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();
                }
           });