代码之家  ›  专栏  ›  技术社区  ›  Vector

kotlinsqlite创建两个表

  •  1
  • Vector  · 技术社区  · 6 年前

    我们正试图用Kotlin在一个DB中创建两个表。我们尝试了多种不同的语法。如果我们注释掉与第二个表相关联的所有代码,那么第一个表将被创建并保存数据。这是相关代码

    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 回复  |  直到 6 年前
        1
  •  1
  •   Prasanth S    6 年前

    你的 db!!.execSQL(CREATE_TABLE_DEPT + CREATE_TABLE_ITEM) 他错了。

    db.execSQL(CREATE_TABLE_DEPT ); db.execSQL(CREATE_TABLE_ITEM);
    
        2
  •  3
  •   Vir Rajpurohit    6 年前

    不管你用的是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)
    }
    
        3
  •  0
  •   Febi M Felix    6 年前

    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)
        }