3

The second parameter of insert method of SQLiteDatabase is "nullColumnHack". WHat does this refers. What value should be passed to this parameter.

Thanks

Pratik Butani
  • 60,504
  • 58
  • 273
  • 437
sree_iphonedev
  • 3,514
  • 6
  • 31
  • 50
  • http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html explains it all – Gaurav Vashisth May 17 '12 at 09:57
  • 2
    http://stackoverflow.com/questions/2662927/android-sqlite-nullcolumnhack-parameter-in-insert-replace-methods – Dheeresh Singh May 17 '12 at 09:59
  • Possible duplicate of [Android SQLite: nullColumnHack parameter in insert/replace methods](https://stackoverflow.com/questions/2662927/android-sqlite-nullcolumnhack-parameter-in-insert-replace-methods) – fabian Jun 12 '17 at 18:22

3 Answers3

5

Let's suppose you have a table named foo where all columns either allow NULL values or have defaults.

In some SQL implementations, this would be valid SQL:

`INSERT INTO `foo;

That's not valid in SQLite. You have to have at least one column specified:

INSERT INTO foo (somecol) VALUES (NULL);

Hence, in the case where you pass an empty ContentValues to insert(), Android and SQLite need some column that is safe to assign NULL to. If you have several such columns to choose from, pick one via the selection mechanism of your choice: roll of the dice, Magic 8-Ball(TM), coin flip, cubicle mate flip, etc.

Personally, I'd've just made it illegal to pass an empty ContentValues to insert(), but they didn't ask me... :-)

courtesy commonsware.

N-JOY
  • 10,344
  • 7
  • 51
  • 69
  • That is why I have given credits to Commonsware on the last line – N-JOY Apr 25 '16 at 07:52
  • Even if you gave credit to the author, imho stackoverflow is intended to duplicate answers. Thats why there is a duplicate flag. – quadroid Jan 03 '17 at 06:49
0

nullColumnHack are known and an empty row can't be inserted. If not set to null, the nullColumnHack parameter provides the name of nullable column name to explicitly insert a NULL into in the case where your values is empty.

Thiru VT
  • 831
  • 2
  • 8
  • 24
-1

Brief explanation..

nullColumnHack

optional; may be null. SQL doesn't allow inserting a completely empty row without naming at least one column name. If your provided values is empty, no column names are known and an empty row can't be inserted. If not set to null, the nullColumnHack parameter provides the name of nullable column name to explicitly insert a NULL into in the case where your values is empty.

Vishesh Chandra
  • 6,951
  • 6
  • 35
  • 38