这就是我目前检索会员的方式'基于ID的SQL数据库的名称。
它目前工作正常,但我认为最佳做法是以这种方式进行选择,因为如果有某种重复的ID,它可能会检索错误的名称。
有更好的方法吗?
objects
答案 0 :(得分:1)
您的查询没有问题,因为其他人已经假设id是主键。如果您的数据库是以这种方式设计的,那么您将永远不必担心重复的密钥 - 它不会发生。
关于查询本身,也许你可以考虑准备好的语句。请参阅https://developer.android.com/reference/java/sql/PreparedStatement.html。
答案 1 :(得分:0)
根据您所引用的SQL实现,您可以使用:
"SELECT TOP(1) [name] FROM [<schema>].[members]
WHERE [id] = " + id + "
ORDER BY <what_to_order_by> ASC/DESC "...
您通常希望包含表的架构名称,因为它可能不在默认架构中。您选择TOP TOP(1)只返回1个值,您通常会按ORDER BY建立唯一性所需的值。或者,如果建立唯一性需要多个列,则可以执行以下操作:
"SELECT TOP(1) [name] FROM [<schema>].[members]
WHERE [id] = " + id + " AND [birth_date] = " + birth_date + "
ORDER BY <what_to_order_by> ASC/DESC "...
这都假设[id]列不是唯一的。如果它是主键或唯一,你仍然应该像我上面提到的那样在防御性方面进行编程。
答案 2 :(得分:0)
根据我的经验,rawQuery有时不适用于WHERE子句。尝试使用query()。 Android Documentation