2011-03-13 51 views
0

我想爲我的數據庫查詢一個字符串讓我們稱之爲「測試」,然後找出特定的字符串是哪一行,並保存該號碼使用。我以爲我有這個想法之前,但現在它不工作,出於某種原因,我得到一個錯誤說沒有這樣的列「測試」。從數據庫中的行ID

這裏是我的代碼

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

我不記得當我第一次測試的任何更改它所以我不知道爲什麼它現在不工作

回答

0

有2個錯誤,我不能CE:

  1. 在查詢

    光標C = db.query(DATABASE_TABLE,新的String [] {ID},其中,NULL,NULL,NULL,NULL);

只有ID列中選擇,而你想在SELECT子句中,以及獲取列名的詳細

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

包括姓名欄:像

Cursor c = db.query(DATABASE_TABLE, new String[] {ID,NAME},where,null,null,null,null); 
  1. 在where子句中,您需要編寫條件字符串,但不包括「where」 case字符串,其中包含值「Test」。因此過濾條件應該如下:

    String 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; 
} 
+0

改變了我的查詢,你說什麼 光標C = db.query(DATABASE_TABLE,新的String [] {ID,PHONE_NUMBER,NAME}, NAME +「=」+ where,null,null,null,null); 但它仍然做同樣的事情 – tyczj 2011-03-13 02:48:00

+0

你是否改變了上面提到的where字符串? – 2011-03-13 02:49:55

+0

然後,我必須困惑你的意思。我以爲你的意思是在查詢中改變NAME +「=」+在哪裏。這是你的意思嗎? – tyczj 2011-03-13 03:05:26

相關問題