I have created a database helper class, and when I run the code I keep getting the following error message: "android.database.sqlite.SQLiteException: table words_info has no column named back_word (code 1 SQLITE_ERROR[1]): , while compiling: INSERT INTO words_info(front_word,back_word) VALUES (?,?)." I tried changing the version of the database but that didn't work either... at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
package com.example.language;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import androidx.annotation.Nullable;
import java.util.ArrayList;
import java.util.List;
public class HelperDB extends SQLiteOpenHelper {
static final int DATABASE_VERSION = 1;
public static final String DB_NAME = "words.db";
public static final String TABLE_NAME = "words_info";
public static final String FRONT_WORD = "front_word";
public static final String BACK_WORD = "back_word";
public HelperDB(Context context) {
super(context, DB_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
String st = "CREATE TABLE " + TABLE_NAME + " ( " + FRONT_WORD + " TEXT , " + BACK_WORD + "TEXT ) "; //CREATE TABLE words_info (front_word TEXT, back_word TEXT)
db.execSQL(st);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// Drop older table if existed
db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
// Create tables again
onCreate(db);
}
public void addWord(Card c){
SQLiteDatabase db = this.getWritableDatabase();
ContentValues cv = new ContentValues();
cv.put(FRONT_WORD, c.getFront_word());
cv.put(BACK_WORD, c.getBack__word());
db.insert(TABLE_NAME, null, cv);
db.close();
}
public List<Card> getWords(){
List<Card> returnList = new ArrayList<>();
String queryString = "SELECT * FROM " + TABLE_NAME;
SQLiteDatabase db = getReadableDatabase();
Cursor cursor = db.rawQuery(queryString, null);
if(cursor.moveToFirst()){
//loop through the cursor (result set) and create new card object. put them into the return list
do{
String front_word = cursor.getString(0);
String back_word = cursor.getString(1);
Card card = new Card(front_word, back_word);
returnList.add(card);
}while(cursor.moveToNext());
}
else{
}
cursor.close();
return returnList;
}
public void deleteOne(Card c){
SQLiteDatabase db = getWritableDatabase();
String queryString = "DELETE FROM " + TABLE_NAME + " WHERE " + FRONT_WORD + " = " + c.getFront_word();
Cursor cursor = db.rawQuery(queryString, null);
}
}
2022-05-01 16:15:56.733 2853-2853/com.example.language E/SQLiteLog: (1) table words_info has no column named back_word in "INSERT INTO words_info(front_word,back_word) VALUES (?,?)"
2022-05-01 16:15:56.737 2853-2853/com.example.language E/SQLiteDatabase: Error inserting front_word=hello back_word=hello
android.database.sqlite.SQLiteException: table words_info has no column named back_word (code 1 SQLITE_ERROR[1]): , while compiling: INSERT INTO words_info(front_word,back_word) VALUES (?,?)
at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:1463)
at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:901)
at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:590)
at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:62)
at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:33)
at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:2217)
at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:2088)
at com.example.language.HelperDB.addWord(HelperDB.java:51)
at com.example.language.MainActivity$1.onClick(MainActivity.java:50)
at android.view.View.performClick(View.java:8160)
at android.widget.TextView.performClick(TextView.java:16222)
at com.google.android.material.button.MaterialButton.performClick(MaterialButton.java:1119)
at android.view.View.performClickInternal(View.java:8137)
at android.view.View.access$3700(View.java:888)
at android.view.View$PerformClick.run(View.java:30236)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:246)
at android.app.ActivityThread.main(ActivityThread.java:8595)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:602)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1130)