问题 关于sqlite数据库的问题,没有这样的表:


我打开一个sqlite数据库并使用rawquery来获取数据。

但是log.e显示了以下信息:

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

但是,我真的有这张桌子。

而且我也尝试使用其他sql,但也得到错误消息,如

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

我相信有这两张桌子。 那么为什么要收到错误信息呢?


12655
2018-02-26 14:43


起源

嘿那里,rawquery是什么样的?表名是“types:”和“mall”:? - TheChange
你真的用你的数据库创建 CREATE TABLE... ? - tbruyelle
实际上,我已经有了一个数据库文件。所以我把它放在“assets”文件夹中。我创建一个自定义SQLiteOpenHelper来将此文件复制到路径:/data/data/com.SGMalls/databases/mallMapv2.sqlite然后使用Sqlitedatabse.open();打开此数据库并尝试获取数据 - user275788
rawquery Cursor cursor = myDataBase.rawQuery(queryString,null);我在Sqlitebrowser中测试了这个queryString。没关系。可以得到数据 - user275788
这个数据库很大。那么这就是问题所在?因为我从“在Android应用程序中使用您自己的SQLite数据库”编写自定义SQLiteOpenHelper reigndesign.com/blog/... 因此复制文件代码可能无法复制完整的文件。是? - user275788


答案:


如果这是在模拟器上,请使用DDMS文件资源管理器或 adb pull 下载数据库文件的副本并确认其内容。

我创建了一个自定义的SQLiteOpenHelper   将此文件复制到路径:   /data/data/com.SGMalls/databases/mallMapv2.sqlite

如果您尝试复制该文件 SQLiteOpenHelperonCreate(), 你太迟了。我会在那之前做的。

所以复制文件代码可能不行   复制完整的文件。

在这种情况下,您更有可能会收到有关损坏文件的错误。


11
2018-02-26 16:13



好。非常感谢。所以。如果我想在设备中测试此代码。还需要先在设备中粘贴sqlite数据库吗?哦......我需要仔细阅读教程谢谢 - user275788
嗨。正如你所说:我用ddms文件资源管理器来拉取数据库文件。我发现有三个floder:数据,sdcared和系统。所以任何人都可以吗?这个文件的路径也是/data/data/com.SGMalls/databases/mallMapv2.sqlite?谢谢。请帮助我 - user275788
>>>>如果您尝试在SQLiteOpenHelper的onCreate()中复制文件,则为时已晚。我会在那之前做的。<<<<<<为我感谢... +1 - Shashank Degloorkar
@CommonsWare:在我的Android手机中没有数据/数据的路径。这可能是“表未找到错误”的原因。由于我的手机中不存在数据/数据,因此无法将我的数据库从assets文件夹复制到data / data / com.myapp / databases。这是问题吗? - Ashwin


我认为更改表结构时会发生此错误。要解决此问题,请清理数据 (设置  - > 管理申请  - > 清晰的数据)在安装新应用程序之前。

问候。


2
2017-08-14 06:23





如果您有多个内容提供者,您可能会认为您的表存在而不存在。在这种情况下,您获得的错误是合法的。

看看这里的细节和解决方案: http://devserghini.blogspot.com/2010/11/android-sqliteopenhelper-and-multiple.html


2
2017-11-05 23:02





SQLiteDatabase.execSQL() 解释采用单个字符串sql,以“;”结尾。两行没有解释。

在几行中创建表只是没有执行。


1
2017-10-03 01:00