数据库中的行ID

时间:2011-03-13 02:03:26

标签: android

我正在尝试查询我的数据库中的字符串,然后将其称为“测试”,然后找出该特定字符串所在的行并保存该数字以供使用。我以为我之前已经想到这个问题,但现在因为某种原因它没有工作,我得到一个错误,说没有这样的专栏“测试”。

这是我的代码

public String getRow(String value){

    ContactDB db = new ContactDB(this);
    db.open();
    Cursor curs = db.getId(value);
    String test = curs.getString(curs.getColumnIndex(db.NAME));
    curs.close();
    Log.v("Contact", "Row ID: " + test);
    db.close();
    return test;
}

“测试”作为值

发送到该值

这是在我的数据库中

//---retrieve contact id---
public Cursor getId(String where){
    Cursor c = db.query(DATABASE_TABLE, new String[] {ID},where,null,null,null,null);
    if (c != null) 
        c.moveToFirst();
    return c;
}

我不记得从我第一次测试时改变了什么,所以我不知道为什么它现在不能工作

1 个答案:

答案 0 :(得分:0)

我注意到有两个错误:

  1. 在查询中

    Cursor c = db.query(DATABASE_TABLE,new String [] {ID},where,null,null,null,null);

  2. 仅选择ID列,而您尝试获取列NAME的详细信息

    String test = curs.getString(curs.getColumnIndex(db.NAME));
    

    在select子句中包含name列:类似

    Cursor c = db.query(DATABASE_TABLE, new String[] {ID,NAME},where,null,null,null,null);
    
    1. 在where子句中,您需要编写条件字符串,不包括“where” 在你的情况下String包含值“Test”。因此,过滤条件应为

      String whereClasue = NAME +“='”+ where +“'”;

    2. 查询应该是这样的:

      public Cursor getId(String where){
           Cursor c = db.query(DATABASE_TABLE, new String[] {ID,PHONE_NUMBER,NAME},NAME + " = '" + where + "'",null,null,null,null);
      
          if (c != null) 
              c.moveToFirst();
          return c;
      }