【问题标题】:android.database.sqlite.SQLiteException: no such table [duplicate]android.database.sqlite.SQLiteException:没有这样的表[重复]
【发布时间】:2011-10-09 11:35:30
【问题描述】:

问题(LogCat)

sqlite 返回:错误代码 = 1, msg = no such table ...

android.database.sqlite.SQLiteException: 没有这样的表: ....

代码

public void onCreate(SQLiteDatabase db) {
    Log.v("SQLAdapter","onCreate(SQLiteDatabase db)");
    db.execSQL("CREATE TABLE "+tablename
            +" ("
            +col1+ " TEXT PRIMARY KEY , "
            +col2+ " TEXT , "
            +col3+ " TEXT , "
            +col4+ " TEXT , "
            +col5+ " TEXT , "
            +col6+ " TEXT , "
            +col7+ " TEXT , "
            +col8+ " TEXT "
            +")");
    db.execSQL("CREATE TABLE "+configTable
            +" ("
            +colName+ " TEXT PRIMARY KEY , "
            +colValue+ " TEXT "
            +")");
    
    ContentValues cv=new ContentValues();
    cv.put(colName, "updated");
    cv.put(colValue, "-1");
    db.insert(configTable, colName, cv);
}

结果

正在创建配置表

没有创建表名

【问题讨论】:

  • tablename的值在哪里设置?我在你的代码中看不到它。另外,您的代码从未尝试访问tablename,那么是什么引发了错误?
  • 忘记访问它.. 当我通过 ddms 获取 sqlite 文件时,我发现 configTable 创建但 tablename 不存在
  • 您是否尝试在表名中插入一些内容?您应该收到一个例外。你会在这里复制/粘贴吗?
  • 07-21 03:32:23.224: ERROR/Database(11222): android.database.sqlite.SQLiteException: no such table: config: , while compile: INSERT INTO config(colName, colValue)值(?,?);

标签: android


【解决方案1】:

只需在使用 SQliteDatabase 实现的数据库类中更改您的数据库名称

我遇到了同样的问题,用同样的技巧解决了。

【讨论】:

  • 我不能再测试它了,因为我决定不在我的任何项目中使用 SQL。请如果有人对此进行测试并且结果错误,请告诉我。目前! +1 并为你打勾。真的谢谢你
  • 这里也发生了同样的事情。我有 3 个类(“X”DbHelper)从具有数据库名称的 BaseDBHelper 继承。我已经完成了你提到的事情,现在它可以工作了......很陌生,不是吗???
  • @m3n0R 很奇怪。我知道我通过为每个表创建一个 SQL 类来解决这个问题!但现在我正在查看这个答案和反馈。看来他找到了正确的解决方案。
  • 这是我在 android 10 上的解决方案
【解决方案2】:

我在真实设备上进行测试时遇到了同样的异常。在我将新表添加到我的数据库后,我不得不从设备上卸载旧的应用程序版本。然后才再次调用来自SQLiteOpenHelper 子类的onCreate() 方法。

【讨论】:

    【解决方案3】:

    同样的问题。通过删除使用 adb 命令创建的旧 xxx.db 来解决问题

    adb shell rm /data/data/xxx.db

    【讨论】:

      【解决方案4】:

      “没有这样的表”问题解决了!

      当您使用 database.db 时,Android 还会使用 android_metadata 表创建另一个名为 database(无扩展名)的文件。

      最后,我解决了只是改变 DB_NAME =“我的数据库” 和 DB_NAME="mydb.db"

      【讨论】:

        【解决方案5】:

        我也面临“没有这样的桌子”的问题。这不是数据库或表的问题,而是您的应用程序的问题。

        只要您重新安装了我们的应用程序,一切都会好起来的。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2016-08-23
          • 1970-01-01
          • 1970-01-01
          • 2023-03-27
          • 2013-10-03
          • 2013-05-25
          相关资源
          最近更新 更多