Kotlin / Android:android.database.sqlite.SQLiteException:没有这样的表:Table_xx(代码1 SQLITE_ERROR):,同时编译:select * from Table_xx

问题描述 投票:2回答:2

我有问题访问我的表,但不可能知道问题出在哪里。该表存在于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"
    }

提前致谢。

android kotlin android-sqlite
2个回答

1
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.