2013-02-28 47 views
0
private static final String DATABASE_CREATE = "CREATE TABLE " 
      + DATABASE_TABLE_USERS + "(" + KEY_ROW_ID + 
     " INTEGER PRIMARY KEY AUTOINCREMENT," + KEY_NAME 
      + " TEXT NOT NULL," + KEY_PASSWORD + " TEXT NOT NULL," + KEY_LOGIN_ATTEMPTS + " INTEGER NOT NULL," + KEY_ZIP + " TEXT," + 
      KEY_STREET + " TEXT," + KEY_EMAIL + " TEXT NOT NULL," + KEY_PHONE + " TEXT);"; 

我創建的on_create方法數據庫: db.execSQL(DATABASE_CREATE);爲什麼我會得到一個-1 getColumnIndex方法

我有這樣的方法:

public int getLoginAttempts(String u_name) { 

    String [] columns = new String [] {DB_Helper.KEY_NAME}; 
    Cursor c = database.query(DB_Helper.DATABASE_TABLE_USERS, columns, DB_Helper.KEY_NAME + "= ?", 
      new String[] {u_name}, 
      null, 
      null, 
      null); 

    if(!c.moveToFirst()) return -1; 

    int c_index = c.getColumnIndex(DB_Helper.KEY_LOGIN_ATTEMPTS); 

    int num = c.getInt(c_index); 
    c.close(); 
    return num; 
} 

c_index總是等於-1。這意味着該列不存在。但它確實如此。而且應該只有一條記錄回來(因爲u_names是唯一的)。

我該如何解決這個問題?

回答

3

那是因爲在查詢您選擇唯一的名字列

當我查詢數據庫,並取回一個指針替換此行

String [] columns = new String [] {DB_Helper.KEY_NAME}; 

String [] columns = new String [] {DB_Helper.KEY_NAME, DB_Helper.KEY_LOGIN_ATTEMPTS}; 
+0

,什麼樣的信息呢那個光標持有? – user678392 2013-02-28 06:35:37

+0

您傳遞給query()方法的'columns'數組,它只保存這些列的信息。 – 2013-02-28 06:36:43

相關問題