Как вставить нулевое значение в Sqlite с помощью SQLiteStatement

Я пытаюсь сохранить Event Sqlite

 public class EventDao{ private SQLiteStatement insertStatement; private SQLiteDatabase db; private static final String INSERT = "insert into " + EventsTable.TABLE_NAME + "(" + EventsColumns.WHO + ", " + EventsColumns.WHAT + ") values (?, ?)"; public EventDao(SQLiteDatabase db) { this.db = db; Log.w(TAG, EventDao.INSERT); insertStatement = db.compileStatement(EventDao.INSERT); } public long save(Event type) { insertStatement.clearBindings(); insertStatement.bindString(1, type.getmWho()); insertStatement.bindString(2, type.getmWhat()); return insertStatement.executeInsert(); } //... } 

Все работает нормально, когда getmWho() и getmWhat() возвращают getmWhat() значения. Но когда я пытаюсь сохранить событие, у которого есть поле Who пусто (и, следовательно, getmWho() возвращает null ), я получаю ошибку

 java.lang.IllegalArgumentException: the bind value at index 1 is null 

Как это исправить?

Используйте bindNull() вместо bindString() для привязки значений, которые являются нулевыми.

Или, поскольку вы очищаете все привязки перед привязкой новых значений, просто не связывайте никакие нулевые строки. Если вы не привязываете какое-либо значение к позиции, принимается значение null по умолчанию.

Intereting Posts