我花了几个小时试图解决这个问题,但我得到的唯一答案是我不能从字符串中选择?是这样吗?我怎么办呢?这是我的代码:
public String getHotness(String l){ // TODO自动生成的方法存根
String[] columns = new String []{ KEY_ROWID, KEY_NAME, KEY_HOTNESS};
Cursor c = ourDatabase.query(DATABASE_TABLE, columns, KEY_ROWID + "=" + l, null, null, null, null);
int iHotness = c.getColumnIndex(KEY_HOTNESS);
if (c != null){
c.moveToFirst();
String hotness = c.getString(iHotness);
return hotness;
}
return null;
}
其中l是我数据库中某人的姓名。我如何通过他的名字从这个人中选择并获取信息?
谢谢!你们是最棒的!
答案 0 :(得分:0)
LIKE就是你要找的。 %表示在您的名称匹配之前的任何内容。 ?yourname表示之前只有1个字符。如果您确定名称完全匹配,则需要使用name =' yourname'代替。
Cursor c = null;
try {
c = ourDatabase.rawQuery("SELECT * from yourtable where name LIKE '%yourname%', null);
if (c != null && c.getCount() > 0 && c.moveToFirst()) {
do {
c.getString(....);
} while (c.moveToNext());
}
} catch (Exception e) { e.printStackTrace(); }
finally {
if (c != null) c.close();
}
答案 1 :(得分:0)
您可以使用选择的WHERE子句仅选择符合特定条件的记录。如果是SQLiteDatabase#query()
方法,则需要使用第三个参数。
其他考虑因素:
Cursor
是否为空,它永远不会(正如文档中所述)。Cursor
。示例:
final String theName = "The person name";
Cursor c = null;
try {
c = ourDatabase.query(DATABASE_TABLE, columns, KEY_NAME + " = ?", new String[]{theName}, null, null, null);
if (c.moveToNext()) {
// Do your stuff
}
} finally {
if (c != null) {
c.close();
}
}`
请注意,之前的查询仅匹配KEY_NAME
列完全 theName
值的行。如果您要按包含theName
值的名称进行搜索,则需要使用LIKE
运算符。
final String likeName = "%" + theName + "%";
final Cursor c = ourDatabase.query(DATABASE_TABLE, columns, KEY_NAME + " LIKE ?", new String[]{likeName}, null, null, null);