I am new to SQLite and trying to create an SQLite database. Still, the problem is that even though I am using writabledatabase before inserting the data in the addData() method I still get the error "no such table". I don't know where the bug is.
This is the code for the database class. Of course, I am creating DBHelper in the MainActivity and I pass this as the context.
class DBHelper(context: Context, factory: SQLiteDatabase.CursorFactory?) : SQLiteOpenHelper(context, DATABASE_NAME, factory, DATABASE_VERSION)
{
private val SQL_CREATE_ENTRIES = "CREATE TABLE $TABLE_NAME (" + "${BaseColumns._ID} INTEGER, " + "$COLUMN_NAME_CHAPTER TEXT," + "$COLUMN_NAME_VERSE TEXT, " + "$COLUMN_NAME_NUMBER INTEGER)"
private val SQL_DELETE_ENTRIES = "DROP TABLE IF EXISTS $TABLE_NAME"
override fun onCreate(db: SQLiteDatabase) {
Log.i("testDatabase", "create")
db.execSQL(SQL_CREATE_ENTRIES)
}
override fun onUpgrade(db: SQLiteDatabase, oldVersion: Int, newVersion: Int) {
db.execSQL(SQL_DELETE_ENTRIES)
onCreate(db)
}
fun addData(name: String, content: String, number: Int) :Boolean
{
val values = ContentValues().apply {
put(COLUMN_NAME_CHAPTER, name)
put(COLUMN_NAME_VERSE, content)
put(COLUMN_NAME_NUMBER, number)
}
val db = writableDatabase
val newId = db?.insert(TABLE_NAME, null, values)
db.close()
return newId?.toInt() != -1
}
companion object {
const val DATABASE_VERSION = 1
const val DATABASE_NAME = "FeedReader.db"
const val TABLE_NAME = "versesBookmarked"
const val COLUMN_NAME_CHAPTER = "chapter"
const val COLUMN_NAME_VERSE = "verse"
const val COLUMN_NAME_NUMBER = "number"
}
}
This is the error I am getting:
E/SQLiteLog: (1) no such table: versesBookmarked in "INSERT INTO versesBookmarked(number,verse,chapter) VALUES (?,?,?)" E/SQLiteDatabase: Error inserting number=0 verse=بِسْمِ اللَّهِ الرَّحْمَٰنِ الرَّحِيمِ chapter=الفاتحة android.database.sqlite.SQLiteException: no such table: versesBookmarked (code 1 SQLITE_ERROR): , while compiling: INSERT INTO versesBookmarked(number,verse,chapter) VALUES (?,?,?)


