Kotlin / Android:android.database.sqlite.SQLiteException:无此类表:Table_xx(代码1 SQLITE_ERROR):,而在编译时:从Table_xx中选择*

时间:2019-04-05 13:50:58

标签: android kotlin android-sqlite

我在访问我的表时遇到问题,但无法知道问题出在哪里。该表在 Table_xx 中的SQL select *中很好地存在。

我不知道没有这样的表错误消息是否真的是缺少表的问题...

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:*/
    {
         print("test")

        val list = ArrayList<String>()
        val db = this.readableDatabase


        val c = db.rawQuery(strQuery, null)

        if (c.moveToFirst()) {
            do {
                list.add(c.getString(c.getColumnIndexOrThrow("lng")))
            } while (c.moveToNext())
        }
        c.close()
        db.close()
    }

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

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

谢谢。

2 个答案:

答案 0 :(得分:1)

使用SQLiteOpenHelper,您需要在onCreate()覆盖中编写代码,以执行创建所需表的SQL。您的实现只显示数据库名称,而留下一个空数据库且没有表。

在此处添加SQL后,您可以卸载应用一次,以删除旧的空数据库并再次触发onCreate()

答案 1 :(得分:1)