Android アプリのユーザーに関する情報を格納するデータベースを実装しようとしています。
ここに文字列があります:
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);";
この文字列を使用して、OnCreate メソッドで db.execSQL(DATABASE_CREATE) を呼び出します。
これがエラーが発生している場所だと思います:
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;
}
列 KEY_PASSWORD が見つからないという例外がすぐに発生します。
ログファイルは次のとおりです。
02-25 21:20:56.426: D/MainActivity(2257): 保存ボタンがクリックされました
02-25 21:20:56.695: E/SQLiteLog(2257): (1) そのような列はありません: KEY_PASSWORD
02-25 21:20:56.695: D/AndroidRuntime(2257): VM をシャットダウンしています
02-25 21:20:56.705: W/dalvikvm(2257): threadid=1: キャッチされない例外で終了するスレッド (グループ = 0x40a70930)
02-25 21:20:56.775: E/AndroidRuntime(2257): 致命的な例外: メイン
02-25 21:20:56.775: E/AndroidRuntime(2257): java.lang.IllegalStateException: アクティビティのメソッドを実行できませんでした
02-25 21:20:56.775: E/AndroidRuntime(2257): android.view.View$1.onClick(View.java:3597)
02-25 21:20:56.775: E/AndroidRuntime (2257): android.view.View.performClick (View.java:4202) で
02-25 21:20:56.775: E/AndroidRuntime(2257): android.view.View$PerformClick.run(View.java:17340) で
02-25 21:20:56.775: E/AndroidRuntime(2257): android.os.Handler.handleCallback(Handler.java:725) で
02-25 21:20:56.775: E/AndroidRuntime(2257): android.os.Handler.dispatchMessage(Handler.java:92) で
02-25 21:20:56.775: E/AndroidRuntime(2257): android.os.Looper.loop(Looper.java:137)
02-25 21:20:56.775: E/AndroidRuntime(2257): android.app.ActivityThread.main(ActivityThread.java:5039)
02-25 21:20:56.775: E/AndroidRuntime(2257): java.lang.reflect.Method.invokeNative(ネイティブ メソッド) で
02-25 21:20:56.775: E/AndroidRuntime(2257): java.lang.reflect.Method.invoke(Method.java:511) で
02-25 21:20:56.775: E/AndroidRuntime(2257): com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) で
02-25 21:20:56.775: E/AndroidRuntime (2257): com.android.internal.os.ZygoteInit.main (ZygoteInit.java:560) で
02-25 21:20:56.775: E/AndroidRuntime(2257): dalvik.system.NativeStart.main(ネイティブ メソッド) で
02-25 21:20:56.775: E/AndroidRuntime(2257): 原因: java.lang.reflect.InvocationTargetException
02-25 21:20:56.775: E/AndroidRuntime(2257): java.lang.reflect.Method.invokeNative(ネイティブ メソッド) で
02-25 21:20:56.775: E/AndroidRuntime(2257): java.lang.reflect.Method.invoke(Method.java:511) で
02-25 21:20:56.775: E/AndroidRuntime(2257): android.view.View$1.onClick(View.java:3592)
02-25 21:20:56.775: E/AndroidRuntime(2257): ... 11 詳細
02-25 21:20:56.775: E/AndroidRuntime(2257): 原因: android.database.sqlite.SQLiteException: そのような列はありません: KEY_PASSWORD (コード 1): 、コンパイル中: SELECT id_name, id_password FROM reg_users_table WHERE KEY_PASSWORD = ? AND KEY_NAME = ?
02-25 21:20:56.775: E/AndroidRuntime(2257): android.database.sqlite.SQLiteConnection.nativePrepareStatement(ネイティブ メソッド) で
02-25 21:20:56.775: E/AndroidRuntime (2257): android.database.sqlite.SQLiteConnection.acquirePreparedStatement (SQLiteConnection.java:882) で
02-25 21:20:56.775: E/AndroidRuntime (2257): android.database.sqlite.SQLiteConnection.prepare (SQLiteConnection.java:493) で
02-25 21:20:56.775: E/AndroidRuntime (2257): android.database.sqlite.SQLiteSession.prepare (SQLiteSession.java:588) で
02-25 21:20:56.775: E/AndroidRuntime(2257): android.database.sqlite.SQLiteProgram.(SQLiteProgram.java:58)
02-25 21:20:56.775: E/AndroidRuntime(2257): android.database.sqlite.SQLiteQuery で。(SQLiteQuery.java:37)
02-25 21:20:56.775: E/AndroidRuntime (2257): android.database.sqlite.SQLiteDirectCursorDriver.query (SQLiteDirectCursorDriver.java:44) で
02-25 21:20:56.775: E/AndroidRuntime (2257): android.database.sqlite.SQLiteDatabase.rawQueryWithFactory (SQLiteDatabase.java:1314) で
02-25 21:20:56.775: E/AndroidRuntime (2257): android.database.sqlite.SQLiteDatabase.queryWithFactory (SQLiteDatabase.java:1161) で
02-25 21:20:56.775: E/AndroidRuntime (2257): android.database.sqlite.SQLiteDatabase.query (SQLiteDatabase.java:1032) で
02-25 21:20:56.775: E/AndroidRuntime (2257): android.database.sqlite.SQLiteDatabase.query (SQLiteDatabase.java:1200) で
02-25 21:20:56.775: E/AndroidRuntime(2257): com.example.wheresmystuff.Model.DB.findPerson(DB.java:57) で
02-25 21:20:56.775: E/AndroidRuntime (2257): com.example.wheresmystuff.Presenter.Login_Presenter.validate (Login_Presenter.java:26) で
02-25 21:20:56.775: E/AndroidRuntime (2257): com.example.wheresmystuff.View.MainActivity.save (MainActivity.java:48) で
02-25 21:20:56.775: E/AndroidRuntime(2257): ... 14 詳細