###前提・実現したいこと
ここに質問したいことを詳細に書いてください
androidStudioで英単語アプリを作成しています。
sqlite更新の処理をいれたときにエラーメッセージがでてきました。
###発生している問題・エラーメッセージ
E/SQLiteLog: (1) no such column: answer E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.nkd.englishapp, PID: 6242 android.database.sqlite.SQLiteException: no such column: answer (code 1): , while compiling: UPDATE englishword SET answer=? WHERE id_ = ? at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method) at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889) at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500) at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588) at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58) at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:31) at android.database.sqlite.SQLiteDatabase.updateWithOnConflict(SQLiteDatabase.java:1576) at android.database.sqlite.SQLiteDatabase.update(SQLiteDatabase.java:1524) at com.example.nkd.englishapp.DatabaseHelper.answerWord(DatabaseHelper.java:87) at com.example.nkd.englishapp.wordActivity.onClick(wordActivity.java:81) at android.view.View.performClick(View.java:4781) at android.view.View$PerformClick.run(View.java:19874) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5288) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
###該当のソースコード
public class DatabaseHelper extends SQLiteOpenHelper { private static final String DBNAME = "word.db"; private static final int DBVERSION = 1; public static final String TABLE_ENGLISHWORD = "englishword"; public static final String COLUMN_ID = "_id"; public static final String COLUMN_ENGLISHWORD = "englishword"; public static final String COLUMN_WORD = "word"; public static final String COLUMN_ANSWER = "answer"; private static final String CREATE_TABLE_SQL = "create table " + TABLE_ENGLISHWORD + "" + "(" + COLUMN_ID + " integer primary key autoincrement," + COLUMN_ENGLISHWORD + " text not null," + COLUMN_WORD + "text not null," + COLUMN_ANSWER + "integer not null)"; public DatabaseHelper(Context context) { super(context, DBNAME, null, DBVERSION); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL(CREATE_TABLE_SQL); db.execSQL("INSERT INTO " + TABLE_ENGLISHWORD + " VALUES(0,'apple','りんご',0);"); db.execSQL("INSERT INTO " + TABLE_ENGLISHWORD + " VALUES(1,'test','テスト',0);"); db.execSQL("INSERT INTO " + TABLE_ENGLISHWORD + " VALUES(2,'table','机',0);"); db.execSQL("INSERT INTO " + TABLE_ENGLISHWORD + " VALUES(3,'giutar','ギター',0);"); db.execSQL("INSERT INTO " + TABLE_ENGLISHWORD + " VALUES(4,'product','製品',0);"); db.execSQL("INSERT INTO " + TABLE_ENGLISHWORD + " VALUES(5,'ddemand','需要、供給',0);"); db.execSQL("INSERT INTO " + TABLE_ENGLISHWORD + " VALUES(6,'especially','特に',0);"); db.execSQL("INSERT INTO " + TABLE_ENGLISHWORD + " VALUES(7,'increase','増える、増やす',0);"); db.execSQL("INSERT INTO " + TABLE_ENGLISHWORD + " VALUES(8,'release','公表する、発売する',0);"); db.execSQL("INSERT INTO " + TABLE_ENGLISHWORD + " VALUES(9,'work overtime','時間外労働をする、残業する',0);"); } /*public void answerWord(SQLiteDatabase db, int id) { String updateSql = "UPDATE englishword SET answer = 1 WHERE _id = ?"; db.execSQL(updateSql, new String[]{String.valueOf(id)}); }*/ public void answerWord(SQLiteDatabase db, int id) { ContentValues values = new ContentValues(); values.put(COLUMN_ANSWER, 1); db.update("englishword", values, "id_ = ?", new String[]{String.valueOf(id)}); } }
###試したこと
なんで、no such culumnになるのかわけがわからないです。
回答3件
あなたの回答
tips
プレビュー
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。
また依頼した内容が修正された場合は、修正依頼を取り消すようにしましょう。
2016/09/09 04:51