1

我有以下问题:每次我想访问 Logcat 中的“Stores”表时,我都会看到以下错误消息:

10-24 15:09:06.955: E/SQLiteLog(20264): (1) no such table: Stores

但是当我删除数据库并再次创建所有表时,在 Logcat 中创建时没有看到任何错误。当我尝试访问或写入“类别”表时,我没有任何错误,只有“商店”。当我后来在 sqlitestudio 中浏览 SQLite 数据库时,我只看到带有我插入的值的表类别,坚果没有其他,结果也缺少“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>
4

2 回答 2

3

AndroidexecSQL执行单个语句: http: //developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html#execSQL(java.lang.String)

这意味着您只创建一个表 -OpeningHours这是 SQL 脚本中的最后一条语句。您需要在一次execSQL调用中分离每个创建。

于 2013-03-03T12:36:36.730 回答
0

尝试仅使用所有线程中的一个 SQLiteDatabase 实例。这样可以避免访问 SQLite 数据库的许多问题。

于 2013-03-03T12:37:38.843 回答