Android SQLite:挿入/置換メソッドのnullColumnHackパラメーター


96

Android SDKには、SQLiteでデータを操作するための便利なメソッドがいくつかあります。ただし、挿入メソッドと置換メソッドの両方で、nullColumnHack使用法がわからないパラメーターを使用しています。

ドキュメントはそれを次のように説明していますが、テーブルに複数の列を許可するとNULLどうなりますか?本当にわかりません:/

SQLでは完全に空の行を挿入できないため、initialValuesが空の場合、この列[ / row for replace ]には明示的にNULL値が割り当てられます。

回答:


195

fooすべての列がNULL値を許可するかデフォルトを持つテーブルという名前のテーブルがあるとします。

一部のSQL実装では、これは有効なSQLになります。

INSERT INTO foo;

これはSQLiteでは無効です。少なくとも1つの列を指定する必要があります。

INSERT INTO foo (somecol) VALUES (NULL);

したがって、空ContentValuesinsert()に渡す場合、AndroidとSQLiteには安全に割り当てNULLられる列が必要です。そのような列が複数ある場合は、選択した選択メカニズム(サイコロの転がし、Magic 8-Ball(TM)、コインフリップ、キュービクルメイトフリップなど)から1つを選択します。

個人的には、に空ContentValuesを渡すことを違法にしただけですinsert()が、彼らは私に尋ねませんでした... :-)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.