在Sqlite表中插入null

我试图找出如何在Android中的SQLite表中插入一个空值。

这是表格:

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

我想通过execSQL使用一个简单的插入命令,但由于其中一个值是blob我不能这样做(我认为)。

所以,我正在使用一个标准的db.Insert命令。 我如何使其中一个值为空?

如果我只是在ContentValues对象中跳过它,它会自动在列中放置一个空值?

  • Android Persistence room:“无法弄清楚如何从游标中读取此字段”
  • java.lang.IllegalStateException:尝试重新打开已关闭的对象(尝试关闭)
  • Android系统。 内容提供者或数据库?
  • 如何在Android上的SQLite数据库中实现“inheritance”关系
  • Sqlite DB与Android的一些基本问题
  • 为Android的sqlite数据库使用自定义文件
  • 从Android sqlite数据库中检索大blob
  • 在android中备份/恢复sqlite db
  • 是的,你可以跳过ContentValues中的字段,db.insert将它设置为NULL。 您也可以使用其他方式:

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

    这个directrly设置“column1”NULL。 你也可以在update语句中使用这种方式。

    您可以使用ContentValues.putNull(String key)方法。

    我认为你可以跳过它,但你也可以把null,只要确保当你第一次创build数据库时,你不要声明列为“NOT NULL”。

    在你的插入查询string命令中,你可以为你希望为null的值插入null。 这是C#,因为我不知道如何为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 }