Android 来自数据库的行id

Android 来自数据库的行id,android,Android,我试图在数据库中查询一个字符串,让我们称之为Test,然后找出该字符串所在的行,并保存该数字以供使用。我以前以为我已经解决了这个问题,但现在由于某种原因它不起作用了,我得到一个错误,说没有这样的列测试 这是我的密码 public String getRow(String value){ ContactDB db = new ContactDB(this); db.open(); Cursor curs = db.getId(value); String test

我试图在数据库中查询一个字符串,让我们称之为Test,然后找出该字符串所在的行,并保存该数字以供使用。我以前以为我已经解决了这个问题,但现在由于某种原因它不起作用了,我得到一个错误,说没有这样的列测试

这是我的密码

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;
}

我不记得我第一次测试它时做过任何更改,所以我不知道为什么它现在不工作了

我可能会注意到两个错误:

在查询中

游标c=db.queryDATABASE_TABLE,新字符串[]{ID},其中,null,null,null,null

仅选择ID列,而您正在尝试获取列名的详细信息

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);
在where子句中,您需要编写条件字符串,其中不包括where 在您的案例字符串中,其中包含值测试。因此,过滤条件应为

字符串whereClasue=NAME+='+where+'

查询应该是这样的:

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;
}

将我的查询更改为您所说的游标c=db.queryDATABASE_TABLE,新字符串[]{ID,PHONE_NUMBER,NAME},NAME+=+where,null,null,null,null;但是它仍然做同样的事情。你改变了我上面提到的where字符串了吗?我一定很困惑你所说的where字符串是什么意思。我以为你在查询中的意思是更改名称的位置+=+where。这就是你的意思吗?我已经修改了我的ans。希望有帮助。ok它现在执行查询,但它给我一个错误java.lang.IllegalStateException:从第0行获取字段插槽col-1失败