在android中的sqlite中选择查询,在where子句中有两个值

时间:2011-03-13 10:07:28

标签: android sqlite

我想在sqlite for android中编写查询,其中我想根据该行的两个值获取值。我该怎么做? 我有以下查询来获取基于一个值的值:

cursor = db.query(TABLE_NAME,new String[] {NAME}, ROLL_NO + " like" + "'%" 
                + roll + "%'", null, null, null, null);

4 个答案:

答案 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});

相关问题