Android 并非所有表都是在SQLite数据库中创建的
我有以下问题: 每次我想访问Logcat中的“存储”表时,我都会看到以下错误消息:Android 并非所有表都是在SQLite数据库中创建的,android,sql,sqlite,Android,Sql,Sqlite,我有以下问题: 每次我想访问Logcat中的“存储”表时,我都会看到以下错误消息: 10-24 15:09:06.955: E/SQLiteLog(20264): (1) no such table: Stores 但是当我删除数据库并再次创建所有表时,在Logcat中创建时没有看到任何错误。当我试图访问或写入表“Categories”时,我没有任何错误,只有“Stores”。当我稍后在sqlitestudio中浏览SQLite数据库时,我只看到带有我插入的值(nut no other)的表类
10-24 15:09:06.955: E/SQLiteLog(20264): (1) no such table: Stores
但是当我删除数据库并再次创建所有表时,在Logcat中创建时没有看到任何错误。当我试图访问或写入表“Categories”时,我没有任何错误,只有“Stores”。当我稍后在sqlitestudio中浏览SQLite数据库时,我只看到带有我插入的值(nut no other)的表类别,结果也显示“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>
如果不存在“类别”,则创建表(
`idCategories`整数不为空,
`名称`文本,
主键(`idCategories`);
如果不存在“存储”,则创建表(
`idStores`整数不为空,
`name`文本不为空,
`地址`文本,
`LocationLength`整数,
`locationLatitude`整数,
`类别`整数不为空,
`电话号码`文本,
主键(`idStores`);
如果不存在“OpeningHours”,则创建表(
`idOpeningHours`整数不为空,
`存储`整数不为空,
`第`天整数,
`上午`文本,
`下午`文本,
主键(`IDOpenHours`);
AndroidexecSQL
执行一条语句:
这意味着您只创建了一个表-
OpeningHours
,这是SQL脚本中的最后一条语句。您需要在一个execSQL
调用中分离每个create。尝试从所有线程中仅使用一个SQLiteDatabase实例。这样可以避免访问SQLite数据库时出现许多问题