首页 > 解决方案 > Android/Kotlin:如何创建一个使用 DBLocal 类的类?错误消息:类型不匹配需要上下文

问题描述

我想创建一个管理本地数据库和另一个数据库的通用数据库类。我有一个错误,但我不明白是什么问题......

普通班:

class DBHandler {
    companion object {
        val sharedInstance = DBHandler() //gérer si sharedinstance est null pour éviter pb d'ecriture
    }

    fun methodToSelectData(strQuery: String, dataBase: String)/*, completion: @escaping (_ result:*/
    {
        print(message = strQuery)

        val dbLocal = DBLocal(this, null, null, 1) //pb on this line
        dbLocal.methodToSelectData(strQuery)
    }
}

数据库类:

class DBLocal(context: Context, name: String?, factory: SQLiteDatabase.CursorFactory?, version: Int) : SQLiteOpenHelper(context, DATABASE_NAME, factory, DATABASE_VERSION)
{

    override fun onCreate(db: SQLiteDatabase)
    {
        print(DATABASE_NAME)
    }

    override fun onUpgrade(db: SQLiteDatabase, oldVersion: Int, newVersion: Int)
    {

    }
    fun methodToSelectData(strQuery: String)/*, completion: @escaping (_ result:*/
    {

    }

    fun methodToInsertUpdateDeleteData(strQuery: String)/*, completion: @escaping (_ result: Bool) -> Void)*/
    {

    }
    companion object {
        private val DATABASE_VERSION = 1
        private val DATABASE_NAME = "Local.db"
    }
}

提前致谢。

标签: androiddatabasekotlin

解决方案


你可以给一个上下文methodToSelectData

fun methodToSelectData(context : Context, strQuery: String, dataBase: String)/*, completion: @escaping (_ result:*/
{
    print(message = strQuery)

    val dbLocal = DBLocal(context, null, null, 1) //pb on this line
    dbLocal.methodToSelectData(strQuery)
}

推荐阅读