J'essaie de comprendre comment insérer une valeur NULL dans une table SQLite sous Android.
Ceci est la table:
"create table my table (_id integer primary key autoincrement, " +
"deviceAddress text not null unique, " +
"lookUpKey text , " +
"deviceName text , " +
"contactName text , " +
"playerName text , " +
"playerPhoto blob " +
");";
Je voulais utiliser une simple commande Insérer via execSQL
, mais comme l'une des valeurs est un blob, je ne peux pas le faire (je pense).
Donc, j'utilise une commande db.Insert
standard . Comment rendre l'une des valeurs nulle?
Si je le saute simplement dans l'objet ContentValues
, est-ce qu'il mettra automatiquement une valeur nulle dans la colonne?
Oui, vous pouvez ignorer le champ dans ContentValues et db.insert le définira à NULL . Vous pouvez également utiliser l’autre méthode:
ContentValues cv = new ContentValues();
cv.putNull("column1");
db.insert("table1", null, cv);
cela définit directement "column1" NULL. Vous pouvez également utiliser cette méthode dans la déclaration de mise à jour.
Vous pouvez utiliser ContentValues.putNull (String key) method.
Je pense que vous pouvez l'ignorer, mais vous pouvez aussi mettre null, assurez-vous simplement que lorsque vous créez la base de données pour la première fois, vous ne déclarez pas la colonne comme "NOT NULL".
Dans votre commande d'insertion de chaîne de requête, vous pouvez insérer null
pour la valeur que vous souhaitez définir. C'est C # car je ne sais pas comment vous configurez les connexions de base de données pour Android, mais la requête serait la même. Je l'ai donc donnée à des fins d'illustration.
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
}