为BLOB数据类型插入空值

时间:2014-03-17 13:44:08

标签: android sqlite

我试图在变量确实具有空值时插入空值。这是将数据添加到数据库的方法

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)

1 个答案:

答案 0 :(得分:0)

您似乎在创建数据库的字段上放置了一个约束(NOT NULL),这会阻止您插入Null。您可能希望提供创建表的代码。