0

私はsqliteでデータベースを設計しています。このガイドに従って、3つの要素(id、text、blob data)を持つテーブルへのdbアクセスを行いました。bolbはバイトの配列ですが、残念ながら次のコードを使用すると次のようになります。

long insertId = database.insert(MySQLiteHelper.TABLE_COMMENTS, null, values);

insertId常に-1を返しますが、理解できないエラーがあります。

テーブルはこれです:

private static final String DATABASE_CREATE = "create table "
        + TABLE_COMMENTS + "(" + COLUMN_ID
        + " integer primary key autoincrement, " + COLUMN_COMMENT
        + " text not null,"+ MOVE + "blob" + ");";

ファイル内のtxtファイルをテーブルに挿入されるblobバイトとして変換できるアルゴリズムは次のとおりです:(txt-> byte [] array-> blob)

public byte[] ConvertByte () 
{
    byte[] b = new byte[1024];
    int bytesRead =0;
    byte[] dataToSave = null;
    ByteArrayOutputStream bos = null;
    try {
        InputStream is = new FileInputStream(FileName); 
        bos = new ByteArrayOutputStream();
        while ((bytesRead = is.read(b)) != -1) {
          bos.write(b, 0, bytesRead);
        }
      byte[] bytes = bos.toByteArray();
      dataToSave = Base64.encode(bytes, Base64.DEFAULT);
    } catch (IOException e) {
         Toast.makeText(getBaseContext(), e.getMessage(),
                    Toast.LENGTH_SHORT).show();
        }
 return dataToSave;
}
4

1 に答える 1

0

プレーンStringを BLOB データとして挿入するオプションを検討しましたか?

このBase64.encode()関数には、値を返す代替関数がありStringます。また、BLOB データをテーブルに挿入し、この代替手段を使用しましたが、魅力的に機能しました。

于 2012-07-27T21:44:06.447 に答える