我想在sqlite for android中编写查询,其中我想根据该行的两个值获取值。我该怎么做? 我有以下查询来获取基于一个值的值:
cursor = db.query(TABLE_NAME,new String[] {NAME}, ROLL_NO + " like" + "'%"
+ roll + "%'", null, null, null, null);
答案 0 :(得分:2)
试试这个
cursor = db.query(TABLE_NAME,new String[] {NAME}, ROLL_NO + " like" + "'%" + roll + "%' **OR** ", null, null, null, null)
在上述查询
中的 OR 之后添加第二个子句答案 1 :(得分:1)
顺便说一句。伙计们,您是否考虑过数据库安全性(SQL注入攻击)?如果roll
是用户输入的,或者是从潜在的“危险”源(文件或网络)获取的,那么我建议将代码重写为以下内容:
db.query(
TABLE_NAME,
new String[] {NAME},
ROLL_NO + " like " + "'%?%'",
new String[] { String.valueOf(roll) },
null, null, null
);
这样,DB将在执行查询之前“预处理”roll
值,以确保该值可以安全使用。然后将插入安全值,而不是?
语句中的ROLL_NO + " like " + "'%?%'"
字符。
答案 2 :(得分:0)
感谢。以下代码对我有用:
public Cursor fetchMyValues() {
String DATABASE_TABLE="mytablename";
String depthVar="'50'";
String tempVar="'2.5'";
return mDb.query(DATABASE_TABLE, new String[] {"_id", "depth", "temp", "health"},
"temp like " + tempVar + " AND " + "depth like" + depthVar, null, null, null, null);}
这将代表我的sql: 从mytablename中选择health,其中temp ='2.5',depth ='50';
嗯.... 我想我可以用int和/或double来做这个更清洁,使用=而不是like。
答案 3 :(得分:0)
它的简单尝试这个actid,cusid是字符串和FF_CUSTOMER_ID,FF_ACTIVITY_ID是列名
Cursor cursor = db.rawQuery(" select * from" + TABLE_PROJECT_ACTIVITY_CHECKLIST +" where" + FF_ACTIVITY_ID +" =?AND" + FF_CUSTOMER_ID + " =?",new String [] {actid,cusid});