我有以下问题: 每次我想访问Logcat中的“Stores”表时,我都会看到以下错误消息:
10-24 15:09:06.955: E/SQLiteLog(20264): (1) no such table: Stores
但是当我删除数据库并再次创建所有表时,我在Logcat中创建时看不到任何错误。当我尝试访问或写入“类别”表时,我没有任何错误,只有“商店”。当我稍后在sqlitestudio中浏览SQLite数据库时,我只看到具有值insertet的表类别,坚果没有其他,结果也缺少“OpeningHours”。是否有可能在尚未创建的情况下尝试访问这些表?
这是我创建的代码:
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(context.getString(R.string.sql_create));
}
那就是SQL代码
<string name="sql_create">
CREATE TABLE IF NOT EXISTS `Categories` (
`idCategories` INTEGER NOT NULL ,
`name` TEXT,
PRIMARY KEY (`idCategories`) );
CREATE TABLE IF NOT EXISTS `Stores` (
`idStores` INTEGER NOT NULL ,
`name` TEXT NOT NULL ,
`locationAdress` TEXT ,
`locationLongitude` INTEGER ,
`locationLatitude` INTEGER ,
`category` INTEGER NOT NULL ,
`telephoneNumerber` TEXT ,
PRIMARY KEY (`idStores`) );
CREATE TABLE IF NOT EXISTS `OpeningHours` (
`idOpeningHours` INTEGER NOT NULL ,
`store` INTEGER NOT NULL ,
`day` INTEGER ,
`forenoon` TEXT ,
`afternoon` TEXT ,
PRIMARY KEY (`idOpeningHours`) );
</string>
答案 0 :(得分:3)
Android execSQL
执行单个语句:http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html#execSQL(java.lang.String)
这意味着您只创建一个表 - OpeningHours
- 这是SQL脚本中的最后一个语句。您需要在一次execSQL
调用中分隔每个创建。
答案 1 :(得分:0)
尝试在所有线程中仅使用一个SQLiteDatabase实例。这样可以避免访问SQLite数据库时出现的许多问题。