并非所有表都在SQLite数据库中创建

时间:2013-03-03 12:29:32

标签: android sql sqlite

我有以下问题: 每次我想访问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>

2 个答案:

答案 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数据库时出现的许多问题。