jeudi 16 juin 2016

SQLiteError on Android: Can't find column

I'm trying to implement a database to store information about users for an Android app.

Here is a string:

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

I use this string to call db.execSQL(DATABASE_CREATE) in the OnCreate method.

I think this is where the error is occurring:

            public boolean findPerson(String uid, String password) {
                String [] columns = new String [] {DB_Helper.KEY_NAME, DB_Helper.KEY_PASSWORD};
                Cursor c = database.query(DB_Helper.DATABASE_TABLE_USERS, columns,"KEY_PASSWORD = ? AND KEY_NAME = ?",
                new String[] { password, uid },
                null,
                null,
                null);


                 if(!c.moveToFirst()){
                c.close();
               return false;
                  }
                 else c.close();

    return true;
}

I immediately get an exception that says I it cannot find the column KEY_PASSWORD.

Here is the log file:

02-25 21:20:56.426: D/MainActivity(2257): save button clicked

02-25 21:20:56.695: E/SQLiteLog(2257): (1) no such column: KEY_PASSWORD

02-25 21:20:56.695: D/AndroidRuntime(2257): Shutting down VM

02-25 21:20:56.705: W/dalvikvm(2257): threadid=1: thread exiting with uncaught exception (group=0x40a70930)

02-25 21:20:56.775: E/AndroidRuntime(2257): FATAL EXCEPTION: main

02-25 21:20:56.775: E/AndroidRuntime(2257): java.lang.IllegalStateException: Could not execute method of the activity

02-25 21:20:56.775: E/AndroidRuntime(2257): at android.view.View$1.onClick(View.java:3597)

02-25 21:20:56.775: E/AndroidRuntime(2257): at android.view.View.performClick(View.java:4202)

02-25 21:20:56.775: E/AndroidRuntime(2257): at android.view.View$PerformClick.run(View.java:17340)

02-25 21:20:56.775: E/AndroidRuntime(2257): at android.os.Handler.handleCallback(Handler.java:725)

02-25 21:20:56.775: E/AndroidRuntime(2257): at android.os.Handler.dispatchMessage(Handler.java:92)

02-25 21:20:56.775: E/AndroidRuntime(2257): at android.os.Looper.loop(Looper.java:137)

02-25 21:20:56.775: E/AndroidRuntime(2257): at android.app.ActivityThread.main(ActivityThread.java:5039)

02-25 21:20:56.775: E/AndroidRuntime(2257): at java.lang.reflect.Method.invokeNative(Native Method)

02-25 21:20:56.775: E/AndroidRuntime(2257): at java.lang.reflect.Method.invoke(Method.java:511)

02-25 21:20:56.775: E/AndroidRuntime(2257): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)

02-25 21:20:56.775: E/AndroidRuntime(2257): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)

02-25 21:20:56.775: E/AndroidRuntime(2257): at dalvik.system.NativeStart.main(Native Method)

02-25 21:20:56.775: E/AndroidRuntime(2257): Caused by: java.lang.reflect.InvocationTargetException

02-25 21:20:56.775: E/AndroidRuntime(2257): at java.lang.reflect.Method.invokeNative(Native Method)

02-25 21:20:56.775: E/AndroidRuntime(2257): at java.lang.reflect.Method.invoke(Method.java:511)

02-25 21:20:56.775: E/AndroidRuntime(2257): at android.view.View$1.onClick(View.java:3592)

02-25 21:20:56.775: E/AndroidRuntime(2257): ... 11 more

02-25 21:20:56.775: E/AndroidRuntime(2257): Caused by: android.database.sqlite.SQLiteException: no such column: KEY_PASSWORD (code 1): , while compiling: SELECT id_name, id_password FROM reg_users_table WHERE KEY_PASSWORD = ? AND KEY_NAME = ?

02-25 21:20:56.775: E/AndroidRuntime(2257): at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)

02-25 21:20:56.775: E/AndroidRuntime(2257): at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:882)

02-25 21:20:56.775: E/AndroidRuntime(2257): at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:493)

02-25 21:20:56.775: E/AndroidRuntime(2257): at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)

02-25 21:20:56.775: E/AndroidRuntime(2257): at android.database.sqlite.SQLiteProgram.(SQLiteProgram.java:58)

02-25 21:20:56.775: E/AndroidRuntime(2257): at android.database.sqlite.SQLiteQuery.(SQLiteQuery.java:37)

02-25 21:20:56.775: E/AndroidRuntime(2257): at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:44)

02-25 21:20:56.775: E/AndroidRuntime(2257): at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1314)

02-25 21:20:56.775: E/AndroidRuntime(2257): at android.database.sqlite.SQLiteDatabase.queryWithFactory(SQLiteDatabase.java:1161)

02-25 21:20:56.775: E/AndroidRuntime(2257): at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1032)

02-25 21:20:56.775: E/AndroidRuntime(2257): at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1200)

02-25 21:20:56.775: E/AndroidRuntime(2257): at com.example.wheresmystuff.Model.DB.findPerson(DB.java:57)

02-25 21:20:56.775: E/AndroidRuntime(2257): at com.example.wheresmystuff.Presenter.Login_Presenter.validate(Login_Presenter.java:26)

02-25 21:20:56.775: E/AndroidRuntime(2257): at com.example.wheresmystuff.View.MainActivity.save(MainActivity.java:48)

02-25 21:20:56.775: E/AndroidRuntime(2257): ... 14 more

Aucun commentaire:

Enregistrer un commentaire