我有一个场景,“如果不存在,则使用 fts4(_id text, desc text) 创建虚拟表 searchcontent”会崩溃: 靠近“NOT”:语法错误:,编译时:CREATE VIRTUAL TABLE IF NOT EXISTS
这只发生在运行 4.0.2 版本的 Galaxy Nexus 手机上。当我在运行 4.1.2 的 Galaxy Note 2 上尝试时,一切正常。如果我再次删除“如果不存在”,它将在 Nexus 手机上运行。有谁知道错误是什么?是安卓版本问题吗?
在我的 sqlitehelper 类中:
public static final String SearchContentTable_DATABASE_CREATE = "CREATE VIRTUAL TABLE IF NOT EXISTS " + TABLE_NAME + " USING fts4 ( " +
COLUMN_ID + " " + "TEXT" + " , " +
COLUMN_TITLE + " " + "TEXT" + " , " +
COLUMN_DESCRIPTION + " " + "TEXT" + " , " +
COLUMN_KEYWORDS + " " + "TEXT" + " , " +
COLUMN_TYPE + " " + "TEXT" + " );";
@Override
public void onCreate( SQLiteDatabase database )
{
.
.
.
database.execSQL( SearchContentTable_DATABASE_CREATE );
.
.
.
}
最佳答案
“IF NOT EXISTS”语句在某些版本的 Android 中不起作用,特别是 4.0.x 版本。至少在创建虚拟表时是这样。我发布的应用程序之一在 4.0.4 和 4.0.3 版本中多次崩溃。 我的应用程序在版本 4+ 中运行正常,但一旦仅在这些特定版本中使用数据库就会崩溃。
事实上,您不需要“IF NOT EXISTS”语句,因为您在 SQLiteOpenHelper 实现中正确使用了 onCreate 和 onUpgrade 函数。我使用它只是为了预防并避免开发过程中出现问题。
关于android - 编译时在 "NOT": syntax error: , 附近:如果不存在则创建虚拟表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19849068/