Я пытаюсь создать приложение для сбора монет евро, но моя программа не может получить доступ к базе данных, она каждый раз вылетала при попадании в строку попадания 'val db = readableDatabase', она работала, а затем я что-то менял и пытался вернуть его обратно, но он больше не работает, установить приложение удаления не работает в других приложениях, этот код выполняется, но у меня есть еще одно приложение, где этот код успешно выполняется, а затем я добавляю еще одну таблицу, и там у меня та же проблема. Поэтому я подумал, что установка приложения удаления может решить эту проблему, как сброс базы данных. Спасибо за помощь.
class DatabaseHelper(context: Context): SQLiteOpenHelper(context,
DATABASE_NAME, null, 1) {
override fun onCreate(db: SQLiteDatabase?) {
val sqlCreateTable = "CREATE TABLE $TABLE_NAME ($ID INTEGER PRIMARY KEY AUTOINCREMENT, " +
"$COUNTRY_CODE TEXT NOT NULL, " +
"$COIN_VALUE INTEGER NOT NULL, " +
"$OWNERSHIP INTEGER NOT NULL, " +
"$QUALITY INTEGER NOT NULL)"
db!!.execSQL(sqlCreateTable)
fillTable()
}
override fun onUpgrade(db: SQLiteDatabase?, oldVersion: Int, newVersion: Int) {
db!!.execSQL("DROP TABLE IF EXISTS $TABLE_NAME")
onCreate(db)
}
private val listOfCodes = arrayOf(
"AD", "BE", "CY", "DE",
"EE", "FI", "FR", "GR",
"NE", "IE", "LT", "LV",
"LU", "MT", "MO", "PT",
"AT", "SM", "SK", "SI",
"ES", "IT", "VA")
private fun fillTable(){...addingCoins...}
// Like
// insertData(listOfCodes[0], 1)
// insertData(listOfCodes[0], 2)
// insertData(listOfCodes[0], 5) etc.
private fun insertData(code: String, coinValue: Int){
val db = this.writableDatabase
val cv = ContentValues()
cv.put(COUNTRY_CODE, code)
cv.put(COIN_VALUE, coinValue)
cv.put(OWNERSHIP, 0)
cv.put(QUALITY, 0)
db.insert(TABLE_NAME, null, cv)
}
fun updateOwnership(coinId: Int, newOwnership: Int){
val db = writableDatabase
val cv = ContentValues()
cv.put(OWNERSHIP, newOwnership)
db.update(TABLE_NAME, cv, "$ID = $coinId", null)
}
fun updateQuality(coinId: Int, newQuality: Int){
val db = writableDatabase
val cv = ContentValues()
cv.put(QUALITY, newQuality)
db.update(TABLE_NAME, cv, "$ID = $coinId", null)
}
fun getAllCoins(countryCode: String):ArrayList<Coins>{
val coinsList = ArrayList<Coins>()
val db = readableDatabase
val selectionArgs = arrayOf(countryCode)
val c: Cursor = db.rawQuery("SELECT * FROM $TABLE_NAME WHERE $COUNTRY_CODE = ? ORDER BY $COIN_VALUE", selectionArgs)
if (c.moveToFirst()){
do {
val coinItem = Coins(
id = c.getInt(c.getColumnIndex(ID)),
country_code = c.getString(c.getColumnIndex(COUNTRY_CODE)),
coin_value = c.getInt(c.getColumnIndex(COIN_VALUE)),
ownership = c.getInt(c.getColumnIndex(OWNERSHIP)) == 1,
quality = c.getInt(c.getColumnIndex(QUALITY))
)
coinsList.add(coinItem)
}while (c.moveToNext())
}
c.close()
return coinsList
}
companion object{
const val DATABASE_NAME = "Coins.db"
const val TABLE_NAME = "coins_table"
const val ID = "id"
const val COUNTRY_CODE = "country_code"
const val COIN_VALUE = "coin_value"
const val OWNERSHIP = "ownership"
const val QUALITY = "quality"
}
}