1. ホーム
  2. android

[解決済み] Android SQLite: 挿入/置換メソッドにおけるnullColumnHackパラメータ

2023-01-28 23:13:23

質問

Android SDKには、SQLiteでデータを操作するための便利なメソッドがいくつかあります。 しかし 挿入 を置き換える メソッドでは、いくつかの nullColumnHack パラメータを使いますが、その使い方はよくわかりません。

ドキュメントでは以下のように説明されていますが、テーブルが複数のカラムを持ち、そのカラムで NULL ? 私は本当にそれを得ることはありません:/。

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

どのように解決するのですか?

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

いくつかのSQLの実装では、これは有効なSQLとなるでしょう。

INSERT INTO foo;

これはSQLiteでは有効ではありません。少なくとも1つのカラムが指定されていなければなりません。

INSERT INTO foo (somecol) VALUES (NULL);

したがって、空の ContentValuesinsert() を割り当てるために、Android と SQLite は安全なカラムを必要とします。 NULL を割り当てるための安全なカラムが必要です。そのような列がいくつかある場合は、サイコロを振る、マジック 8 ボール(TM)、コイン投げ、同僚投げなど、好みの選択メカニズムで 1 つを選びます。

個人的には、空の ContentValuesinsert() に変更したいのですが、聞かれなかったので... :-)