目前,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()可以完成这项工作。但是在某些情况下,转换并不是那么简单,例如:
问题:
问题1)您对使用Where声明的最佳做法有任何建议吗?
问题2)有没有办法将whereArgs作为ContentValues传递,以便使用本机绑定进行转换?
问题3)如果我将String []用作whereArgs,我将进入一个不对齐的情况:插入本身使用本机绑定函数,但where语句需要自己进行转换。我觉得这会产生一些冲突(例如,我插入浮动" 5.2"但后来我更新了#34; 5,2")的搜索行。
问题3.1)有人甚至有类似的问题,解决方案是什么?
问题3.2)为了对齐2种类型的转换,我想要始终注意转换为String:所以只传递给ConcentValues String(由我转换)+当然要使用相同的转换String [] WhereArgs。这会是一个解决方案吗?您可以预见的缺点是什么?
感谢所有人的支持 恩里科