我有一个场景,“如果不存在使用fts4创建虚拟表searchcontent(_id text,desc text)”正在崩溃: “NOT”附近:语法错误:,编译时:CREATE VIRTUAL TABLE IF NOT NOT EXISTS
这只发生在运行4.0.2的Galaxy nexus手机上。当我在运行4.1.2的星系注2上尝试时,一切正常。如果我再次删除“if not exists”,它将在nexus手机上运行。有谁知道错误是什么?是android版本的问题吗?
在我的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 );
.
.
.
}
答案 0 :(得分:2)
“IF NOT EXISTS”语句在某些Android版本中无效,特别是4.0.x版本。至少在创建虚拟表时。它在版本4.0.4和4.0.3中多次崩溃了我发布的一个应用程序。 我的应用程序在4+版本中正常运行,但只有在这些特定版本中使用DB时才会崩溃。
实际上,您不需要“IF NOT EXISTS”语句,因为您在SQLiteOpenHelper实现中正确使用了onCreate和onUpgrade函数。我只是为了预防而使用它,以避免在开发过程中出现问题。