kotlin sqlite创建两个表

时间:2018-09-25 04:43:53

标签: android sqlite kotlin

我们正在尝试使用Kotlin在数据库中创建两个表。我们尝试了多种语法。如果我们注释掉与第二个表关联的所有代码,则会创建第一个表并保存数据。这是相关代码

class DBHelper(context: Context):SQLiteOpenHelper(context,DBHelper.DB_NAME,null,DBHelper.DB_VERSION) {

override fun onCreate(db: SQLiteDatabase?) {

    val CREATE_TABLE_DEPT = "CREATE TABLE ${DEPT_TABLE} ($colidD INTEGER PRIMARY KEY, $colDept TEXT);"
    val CREATE_TABLE_ITEM = "CREATE TABLE ${ITEM_TABLE} ($colidI INTEGER PRIMARY KEY, $colItem TEXT);"
    db!!.execSQL(CREATE_TABLE_DEPT + CREATE_TABLE_ITEM)
    //db!!.execSQL(CREATE_TABLE_ITEM)
}


override fun onUpgrade(db: SQLiteDatabase?, oldVersion: Int, newVersion: Int) {
    val DROP_TABLE_DEPT = "DROP TABLE IF EXISTS $DEPT_TABLE"
    val DROP_TABLE_ITEM = "DROP TABLE IF EXISTS $ITEM_TABLE"
    db!!.execSQL(DROP_TABLE_DEPT + DROP_TABLE_ITEM)
    //db!!.execSQL(DROP_TABLE_ITEM)
    onCreate(db)
}

伴侣对象

    companion object {
    private val DB_VERSION = 1
    private val DB_NAME = "Grocery.db"
    private val DEPT_TABLE = "Deptatment"
    private val colidD = "idD"
    private val colDept = "Dept"
    private val ITEM_TABLE = "GroceryItems"
    private val colidI = "idI"
    private val colItem = "Item"
}

我们希望问题很明显!如何使用Kotlin在sqlite中创建第二个表?

3 个答案:

答案 0 :(得分:3)

无论您使用的是Android还是kotlin。

您应按以下方式定义代码。

override fun onCreate(db: SQLiteDatabase?) {

    val CREATE_TABLE_DEPT = "CREATE TABLE ${DEPT_TABLE} ($colidD INTEGER PRIMARY KEY, $colDept TEXT);"
    val CREATE_TABLE_ITEM = "CREATE TABLE ${ITEM_TABLE} ($colidI INTEGER PRIMARY KEY, $colItem TEXT);"

    db!!.execSQL(CREATE_TABLE_DEPT)
    db!!.execSQL(CREATE_TABLE_ITEM)
}

答案 1 :(得分:1)

您的db!!.execSQL(CREATE_TABLE_DEPT + CREATE_TABLE_ITEM)错误。 尝试

db.execSQL(CREATE_TABLE_DEPT ); db.execSQL(CREATE_TABLE_ITEM);

答案 2 :(得分:0)

不要连接您的SQl查询。而是在不同的语句中编写查询。例如;

override fun onCreate(db: SQLiteDatabase?) {

        val CREATE_TABLE_DEPT = "CREATE TABLE if not exists ${DEPT_TABLE} ($colidD INTEGER PRIMARY KEY, $colDept TEXT);"
        val CREATE_TABLE_ITEM = "CREATE TABLE if not exists ${ITEM_TABLE} ($colidI INTEGER PRIMARY KEY, $colItem TEXT);"
        db!!.execSQL(CREATE_TABLE_DEPT )
        db.execSQL(CREATE_TABLE_ITEM)
        //db!!.execSQL(CREATE_TABLE_ITEM)
    }