【发布时间】:2013-06-01 19:11:40
【问题描述】:
我正在尝试构建一种方法来确定用户在插入之前是否存在于 Android sqlite 数据库中,我尝试构建此方法以返回行数,但是如果我尝试搜索类似这样的匹配项
String[] columns = new String[] { SCREEN_NAME, NAME, PROFILE_IMAGE_URL,
USER_ID };
Cursor c = friendsDatabase.query(DATABASE_TABLE, columns, SCREEN_NAME
+ " LIKE '" + screenName + "%'", null, null, null, null);
c.moveToFirst();
Integer count= c.getCount();
c.close();
return count;
我得到返回的行数没有问题,但是当我寻找这样的完全匹配时
String[] columns = new String[] { SCREEN_NAME, NAME, PROFILE_IMAGE_URL,
USER_ID };
Cursor c = friendsDatabase.query(DATABASE_TABLE, columns, SCREEN_NAME
+ " = '" + screenName + "'", null, null, null, null);
c.moveToFirst();
Integer count= c.getCount();
c.close();
return count;
无论是否匹配,我每次都会得到 0 行,我不确定我的 SQL 是否有问题,或者我使用错误的参数来生成语句,任何帮助都会有很大帮助,谢谢
【问题讨论】:
-
你为什么要使用 LIKE?您的 LIKE 查询正在寻找前缀匹配,而不是像
=这样的完整匹配。您最好在屏幕名称列上添加适当的唯一约束并捕获异常。 -
我使用 LIKE 作为我得到的东西的一个例子,我需要的是为完全匹配返回的行数,但是我似乎无法让它在第二个例子中工作
-
你的数据库中有那个网名吗?数据库中的屏幕名称和您要查询的名称是否只是大小写不同?
标签: android sql sqlite select rows