Android:SQLiteDatabase更新函数中带有ContentValues的条件符合String []的条件

时间:2016-11-22 08:10:45

标签: android sqlite android-sqlite where-clause content-values

目前,SQLiteDatabase中的更新功能使用String []作为Where args。

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

我发现这很奇怪

A)通常使用ContentValues对象传递值:我可以传递实际对象,SQLiteDatabase将使用其本机绑定函数正确转换它。

例如,我可以将内容值放入一个长的内容,SQLiteDatabase将在插入过程中正确转换它。

put(String key, Long value)

B)但是,对于Where Condition,我需要自己实际将值转换为String。当然,在大多数情况下,这不是问题,因为.toString()可以完成这项工作。但是在某些情况下,转换并不是那么简单,例如:

  • 要隐藏Float号码,我应该使用"。"或","作为小数点(这取决于国家/地区)?
  • 如何将String转换为空值?

问题:

问题1)您对使用Where声明的最佳做法有任何建议吗?

问题2)有没有办法将whereArgs作为ContentValues传递,以便使用本机绑定进行转换?

问题3)如果我将String []用作whereArgs,我将进入一个不对齐的情况:插入本身使用本机绑定函数,但where语句需要自己进行转换。我觉得这会产生一些冲突(例如,我插入浮动" 5.2"但后来我更新了#34; 5,2")的搜索行。

问题3.1)有人甚至有类似的问题,解决方案是什么?

问题3.2)为了对齐2种类型的转换,我想要始终注意转换为String:所以只传递给ConcentValues String(由我转换)+当然要使用相同的转换String [] WhereArgs。这会是一个解决方案吗?您可以预见的缺点是什么?

感谢所有人的支持 恩里科

0 个答案:

没有答案