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

我有这个方法:

 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 是唯一的)。

我该如何解决?

4

1 回答 1

3

那是因为在查询中您只选择名称列

替换这一行

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

String [] columns = new String [] {DB_Helper.KEY_NAME, DB_Helper.KEY_LOGIN_ATTEMPTS};
于 2013-02-28T06:30:35.610 回答