I think it's important that whatever method is chosen, the stringValueForNil option be included in one way or another.

It could just be the empty string always.

Well, it could, but the documentation for SQLite is very specific when it comes to the NULL value, which is translated to .NIL by ooSQLite. NULL is NOT the same as the empty string, rather NULL means 'undefined'. So by always setting the empty string one looses the possibility to differentiate between NULL and an empty string.