Java &引用;“列不存在”;创建数据库时

Java &引用;“列不存在”;创建数据库时,java,android,sqlite,illegalargumentexception,Java,Android,Sqlite,Illegalargumentexception,我正在尝试创建一个带有简单db的android应用程序(使用内置的sqlite db)。 我创建了一个扩展SQLiteOpenHelper的类: public class DatabaseHandle extends SQLiteOpenHelper { private static final String DATABASE_NAME = "pass_db"; public static final String ALIAS_NAME = "name"; public static fina

我正在尝试创建一个带有简单db的android应用程序(使用内置的sqlite db)。 我创建了一个扩展SQLiteOpenHelper的类:

public class DatabaseHandle extends SQLiteOpenHelper {

private static final String DATABASE_NAME = "pass_db";
public static final String ALIAS_NAME = "name";
public static final String USER_NAME = "user";
public static final String PASSWORD = "password";
public static final String TABLE_NAME = "passwords";


public DatabaseHandle(Context context) {
    super(context, DATABASE_NAME, null, 2);

}

@Override
public void onCreate(SQLiteDatabase database) {
    Log.i("DatabaseHandle","inside onCreate");
    database.execSQL("CREATE TABLE "+ TABLE_NAME +" (_id INTEGER PRIMARY KEY AUTOINCREMENT," +
            " "+ALIAS_NAME+" TEXT, " + " "+USER_NAME+" TEXT, "+PASSWORD+" TEXT);");
    ContentValues values = new ContentValues();
    values.put(ALIAS_NAME, "Bank");
    values.put(USER_NAME, "maya123");
    values.put(PASSWORD, "xyz123");
    database.insert(TABLE_NAME, ALIAS_NAME, values);
}
并尝试使用SimpleCurserAdapter获取这些数据:

public class MainActivityPasswords extends ListActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.user_list);
    database = (new DatabaseHandle(this)).getWritableDatabase();

    passwordCursor = database.rawQuery("SELECT _id, name, password FROM passwords ORDER BY name", null);
    SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, 
            R.layout.row, 
            passwordCursor, 
            new String[]{DatabaseHandle.ALIAS_NAME, DatabaseHandle.USER_NAME, DatabaseHandle.PASSWORD},
            new int[]{R.id.alias, R.id.user_name, R.id.password}, 0);
    setListAdapter(adapter);
    registerForContextMenu(getListView());
}
(这是部分代码)

运行代码时,我得到:

Java.lang.IllegalArgumentException:列“用户”不存在

为什么呢?我可以清楚地看到,在打开db文件本身时,我有“user”列


救命啊

您忘记在查询中选择列用户

改变这个

passwordCursor=database.rawQuery(“按名称顺序从密码中选择_id、名称、密码”,null);

对此

passwordCursor=database.rawQuery(“按名称顺序从密码中选择_id、名称、用户、密码”,null);

在游标中不存在…您只会得到您要求的结果,在本例中为列id、名称和密码。我认为没有理由否决此问题。这个问题可能显示了初学者试图学习的一次令人沮丧的尝试,而且问题很清楚,显示了一次尝试和错误感谢您理解@NK,也感谢您从StackOverFlow获得的良好体验!(尽管我被否决)没问题:)顺便说一下,你可以把这个答案标记为接受,这样其他用户就知道这个问题已经解决了