Я хочу создать приложение для викторин, используя Kotlin с SQLite для хранения вопросов и ответов на викторины. Вот что я ожидаю.
Я хочу приращение COL_ID всякий раз, когда создается тест. Я попытался автоинкремент и изменить COL_ID на _ID, но не работает вообще. Любая помощь приветствуется.
class DBHelper(context: Context):SQLiteOpenHelper(context, DATABASE_NAME, null, DATABASE_VER) {
companion object{
private val DATABASE_VER = 1
private val DATABASE_NAME = "quizz.db"
private val TABLE_NAME="Quiz"
private val COL_ID = "id"
private val COL_QUESTION="Question"
private val COL_ANS1 = "Ans1"
private val COL_ANS2 = "Ans2"
private val COL_ANS3 = "Ans3"
private val COL_ANS4 = "Ans4"
}
override fun onCreate(db: SQLiteDatabase?){ //$COL_ID should start from 1..2..
val CREATE_TABLE_QUERY:String = ("CREATE TABLE $TABLE_NAME ($COL_ID INTEGER PRIMARY KEY, $COL_QUESTION TEXT, $COL_ANS1 TEXT, $COL_ANS2 TEXT, $COL_ANS3 TEXT, $COL_ANS4 TEXT) ")
db!!.execSQL(CREATE_TABLE_QUERY);
}
override fun onUpgrade(db: SQLiteDatabase?, oldVersion: Int, newVersion: Int) {
db!!.execSQL("DROP TABLE IF EXISTS $TABLE_NAME")
onCreate(db!!)
}
val allQuiz:List<Quiz>
get(){
val lstQuiz = ArrayList<Quiz>()
val selectQuery = "SELECT * FROM $TABLE_NAME"
val db = this.writableDatabase
val cursor = db.rawQuery(selectQuery, null)
if(cursor.moveToFirst()){
do{
val quiz = Quiz()
quiz.id = cursor.getInt(cursor.getColumnIndex(COL_ID))
quiz.question = cursor.getString(cursor.getColumnIndex(COL_QUESTION))
quiz.choice = cursor.getString(cursor.getColumnIndex(COL_ANS1))
quiz.choice2 = cursor.getString(cursor.getColumnIndex(COL_ANS2))
quiz.choice3 = cursor.getString(cursor.getColumnIndex(COL_ANS3))
quiz.choice4 = cursor.getString(cursor.getColumnIndex(COL_ANS4))
lstQuiz.add(quiz)
}while(cursor.moveToNext())
}
db.close()
return lstQuiz
}
fun addQuiz(quiz: Quiz){
val db = this.writableDatabase
val values = ContentValues()
values.put(COL_ID, quiz.id)
values.put(COL_QUESTION, quiz.id)
values.put(COL_ANS1, quiz.id)
values.put(COL_ANS2, quiz.id)
values.put(COL_ANS3, quiz.id)
values.put(COL_ANS4, quiz.id)
db.insert(TABLE_NAME, null, values)
db.close()
}
fun UpdateQuiz(quiz:Quiz):Int{
val db = this.writableDatabase
val values = ContentValues()
values.put(COL_ID, quiz.id)
values.put(COL_QUESTION, quiz.id)
values.put(COL_ANS1, quiz.id)
values.put(COL_ANS2, quiz.id)
values.put(COL_ANS3, quiz.id)
values.put(COL_ANS4, quiz.id)
return db.update(TABLE_NAME, values, "$COL_ID=?", arrayOf(quiz.id.toString()))
db.close()
}
}
, и вот моя функция add_quiz в onCreate ()
db = DBHelper(this)
refreshData()
button_save.setOnClickListener {
val add_quiz = Quiz {
//Integet.parseInt //get stuck
et_question.text.toString(),
et_choice1.text.toString(),
et_choice2.text.toString(),
et_choice3.text.toString(),
et_choice4.text.toString()
}
db.addQuiz(add_quiz)
}