Android: где условия с ContentValues ​​превышают String[] в функции обновления SQLiteDatabase

В настоящее время функция обновления в SQLiteDatabase использует String[] для аргументов Where.

update(String table, ContentValues values, String whereClause, String[] whereArgs)

Я нахожу это очень странным

A) Обычно значения передаются с использованием объекта ContentValues: я могу передать фактический объект, и SQLiteDatabase преобразует его должным образом, используя его собственные функции привязки.

Например, я могу вставить в Content Value a Long, и SQLiteDatabase преобразует его должным образом во время вставки.

put(String key, Long value)

Б) Тем не менее, для условия "Где" мне нужно преобразовать значения в строку самостоятельно. Конечно, в большинстве случаев это не проблема, так как.toString() сделает свою работу. Однако в некоторых случаях преобразование не так просто, например:

  • чтобы скрыть число с плавающей точкой, я должен использовать "." или "," как десятичная точка (это варьирует страны к странам)?
  • Как я могу преобразовать в String нулевое значение?

ВОПРОСЫ:

Вопрос 1) Есть ли у вас какие-либо предложения относительно наилучшей практики использования оператора Where?

Вопрос 2) Есть ли способ передать whereArgs как ContentValues, чтобы использовать нативную привязку для преобразования?

Вопрос 3) Если я буду использовать String[] в качестве whereArgs, я попаду в невыровненную ситуацию: сама вставка использует собственные функции привязки, но оператор where требует преобразования самостоятельно. Я чувствую, что это вызовет некоторые конфликты (например, я вставляю поплавок "5.2", но затем я обновляю поиск строки на "5,2").

Вопросы 3.1) Были ли у кого-то подобные проблемы и каково было решение?

Вопросы 3.2) Чтобы выровнять 2 вида преобразований, я думал всегда позаботиться о преобразовании в String: так, чтобы передать в ConcentValues ​​только String (преобразованный мной) + конечно, чтобы использовать то же преобразование для String [ ] Где Аргс. Будет ли это решением? Какие недостатки вы можете предвидеть?

Заранее благодарим всех вас за поддержку Энрико

0 ответов

Другие вопросы по тегам