【发布时间】:2018-12-22 20:09:53
【问题描述】:
我正在尝试将byte[] 插入SQLite 数据库,但我收到NOT NULL constraint failed 错误。我在插入和byte[] toString() => [B@e9e5fac和byte[] length=> 32之前检查了值,所以它肯定不是空的。
这是我的数据库表定义:
public static final String TABLE_USER_BLOB_STORE = "user_blob_store";
public static final String USER_BLOB_ID = "_id";
public static final String USER_BLOB_USER_ID = "user_id";
public static final String USER_BLOB = "user_blob";
public static final String[] ALL_COLUMNS_USER_BLOB_STORE = {
USER_BLOB_ID, USER_BLOB_USER_ID, BLOB_STORE};
private static final String TABLE_CREATE_USER_BLOB_STORE =
"CREATE TABLE " + TABLE_USER_BLOB_STORE + " (" +
USER_BLOB_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
USER_BLOB_USER_ID + " INTEGER NOT NULL," +
USER_BLOB + " BLOB NOT NULL" +
")";
这里是插入方法:
public void insertUserBlob(int userId, byte[] userBlob, Context context) {
Log.d("userBlob","string value => " + userBlob.toString()); // [B@e9e5fac
Log.d("userBlob","length => " + userBlob.length); // 32
ContentValues setValues = new ContentValues();
setValues.put(DBOpenHelper.USER_BLOB_USER_ID , userId);
setValues.put(DBOpenHelper.USER_BLOB , userBlob);
Uri setUri = context.getContentResolver().insert(MyProvider.CONTENT_URI_USER_BLOB, setValues);
}
【问题讨论】:
-
用这个命令插入它
db.insert(tablename, null, setValues); -
@masoudvali 你的意思是我应该使用原始查询执行插入操作吗?
-
这不是原始查询。它是数据库辅助方法之一
-
@masoudvali 我试过了,我得到了同样的错误