android - 编译时在 "NOT": syntax error: , 附近:如果不存在则创建虚拟表

标签 android sqlite

我有一个场景,“如果不存在,则使用 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/

相关文章:

sqlite - ESENT性能Vista与XP

Android - 选项菜单不起作用

android - BroadcastReceiver BATTERY_LOW 在显示低电量警告时崩溃

iphone - 什么时候在 iOS 的 sqlite 中完成语句?

ios - CoreData vs. SQLite vs. 自定义实体和 pLists

Android:执行INNER JOIN时如何从Cursor访问结果?

android - 使用 OpenWeatherMap API key

java - 在Android App上播放MP3文件?

android - 我的 android 应用程序可以从内置的电话调用日志应用程序启动吗?

c - sqlite3库 undefined reference 错误