我无法在Sqlite Android应用程序中插入(blob数据)

时间:2012-07-27 18:23:05

标签: android database sqlite

我在sqlite中设计一个数据库我跟着这个guide进行了对三个元素(id,text,blob数据)的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;
}

1 个答案:

答案 0 :(得分:0)

您是否考虑过将普通String作为blob数据插入的选项?

Base64.encode()函数有另一个返回String值的函数。我还将blob数据插入到表中,我使用了这个替代方案,它就像一个魅力。