我试图插入空值时,变量真的有空值。这是将数据添加到数据库的方法
public long addData(String text,String date, String location,byte[] smiley,byte[] image, byte[] audio, byte[] video) {
ContentValues cv = new ContentValues();
cv.put(KEY_TEXT, text);
cv.put(KEY_DATE, date);
cv.put(KEY_LOCATION, location);
if(smiley==null || image==null|| audio==null|| video==null)
{
if(smiley==null)
{
cv.putNull(KEY_SMILEY);
}
else
{
cv.put(KEY_SMILEY, smiley);
}
if(image==null)
{
cv.putNull(KEY_IMAGE);
}
else
{
cv.put(KEY_IMAGE, image);
}
if(audio==null)
{
cv.putNull(KEY_AUDIO);
}
else
{
cv.put(KEY_AUDIO, audio);
}
if(video==null)
{
cv.putNull(KEY_VIDEO);
}
else
{
cv.put(KEY_VIDEO, video);
}
}
long val=ourDatabase.insertOrThrow(TABLE_NAME, null, cv);
return val;
}
使用
创建表@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(" CREATE TABLE " + TABLE_NAME + "( "+ KEY_TEXT + " TEXT NOT NULL, " +
KEY_DATE + " TEXT NOT NULL UNIQUE, " +
KEY_LOCATION + " TEXT , " +KEY_SMILEY+ " BLOB, "
+ KEY_IMAGE + " BLOB , " + KEY_AUDIO + " BLOB, "
+ KEY_VIDEO + " BLOB, " + KEY_ID+" INTEGER PRIMARY KEY "+");"
);
}
但不幸的是它抛出了异常android.database.sqlite.SQLiteConstraintException: Diary.smiley may not be NULL (code 19)
似乎您在创建数据库的字段上放置了一个约束(NOT NULL),这阻止了您插入NULL。您可能希望提供用于创建表的代码。