我需要传递参数 SQLiteDatabase 类/对象以使execSQL起作用。在SQL_User中,包含在扩展的SQLiteOpenHelper中。...但是我如何在DatabaseActivity上初始化它

我想我完全不知道该怎么办...

class DatabaseActivity : Activity {
   override fun onCreate(savedInstanceState: Bundle?) {
      super.onCreate(savedInstanceState)
      setContentView(R.layout.activity_main)

      val db = Sql_User(this, "Users", null, 1)

      // Here I get an error on ??, anything I think could works doesn'ts
      if (db != null) { Sql_User.insert( «??» , "1", "DefaultUser") }

   }
}


class Sql_User : SQLiteOpenHelper {
    companion object {
        fun insert(p0: SQLiteDatabase?, p1: String, p2: String){ p0!!.execSQL("INSERT INTO Users ( id_user, username ) VALUES ('${p1}, '${p2}')")
    }

    ...
}

我遇到的错误是,我传递的任何参数都是... 分类器SQLiteDatabase没有伴侣对象,因此必须在此处初始化

最佳答案

您的db变量的类型为SQLOpenHelper而不是SQLiteDatabase。要从帮助程序获取数据库,您需要调用 getWritableDatabase 方法(或kotlin中的writeableDatabase属性)以获取数据库。

所以对您来说,

 Sql_User.insert(db.writeableDatabase , "1", "DefaultUser")

10-05 22:20