Подтвердить что ты не робот

Вставить null в таблицу Sqlite

Я пытаюсь понять, как вставить нулевое значение в таблицу SQLite в Android.

Это таблица:

"create table my table (_id integer primary key autoincrement, " +
                                               "deviceAddress   text not null unique, " +
                                               "lookUpKey text , " + 
                                               "deviceName text , " +
                                               "contactName text , " +
                                               "playerName text , " +
                                               "playerPhoto blob " +
                                               ");";    

Я хотел использовать простую команду Insert с помощью execSQL, но поскольку одно из значений - это blob, я не могу этого сделать (я думаю).

Итак, я использую стандартную команду db.Insert. Как сделать одно из значений null?

Если я просто пропустил его в объекте ContentValues, он автоматически поместил бы нулевое значение в столбец?

4b9b3361

Ответ 1

Да, вы можете пропустить поле в ContentValues, а db.insert установит его NULL. Также вы можете использовать другой способ:

ContentValues cv = new ContentValues();
cv.putNull("column1");
db.insert("table1", null, cv);

этот directrly устанавливает "column1" NULL. Также вы можете использовать этот способ в инструкции обновления.

Ответ 3

Я думаю, вы можете пропустить его, но вы также можете поместить нуль, просто убедитесь, что при первом создании базы данных вы не объявляете столбец как "NOT NULL".

Ответ 4

В вашей строке строки запроса вставки вы можете вставить null для значения, которое вы хотите иметь значение null. Это С#, поскольку я не знаю, как вы настроили подключения к базе данных для Android, но запрос будет таким же, поэтому я дал его для иллюстративных целей. Я уверен, что вы могли бы приравнять к себе:

SQLiteConnection conn = new SQLiteConnection(SQLiteConnString()); 
// where SQLiteConnString() is a function that returns this string with the path of the SQLite DB file:
// String.Format("Data Source={0};Version=3;New=False;Compress=True;", filePath);

try 
{
    using (SQLiteCommand cmd = conn.CreateCommand()
    {
        cmd.CommandText = "INSERT INTO MyTable (SomeColumn) VALUES (null)";
        cmd.ExecuteNonQuery();
    }
}
catch (Exception ex)
{
    // do something with ex.ToString() or ex.Message
}