SQLiteException:不是错误

Bus*_*ush 5 sqlite android exception getwritabledatabase

在我的应用程序中,我在许多情况下使用数据库,但有一种情况我得到一个例外,不是每次都可以重现它(还).

这仅在OS版本2.3.7和2.1-update-1上发生.

代码:

public void removeOldOccurrences() {
        SQLiteDatabase db = dbHelper.getWritableDatabase();
        Long oldTime = System.currentTimeMillis() - VALID_OCCURRENCE_TIME;
        String query = "";
        try {
            query = "DELETE FROM " + LOCATIONS_TABLE + " WHERE not ("
                    + REMEMBERED_FIELD + "=1) " + "and (" + LAST_FIELD + "<"
                    + oldTime + ");";
            db.execSQL(query);
        } catch (Exception e) {
            Log.e(TAG, query);
            e.printStackTrace();
        } finally {
            if (db != null) {
                db.close();
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

异常跟踪是:

android.database.sqlite.SQLiteException: not an error
at android.database.sqlite.SQLiteDatabase.dbopen(Native Method)
at android.database.sqlite.SQLiteDatabase.(SQLiteDatabase.java:1849)
at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:820)
at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:854)
at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:847)
at android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:573)
at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:203)
at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:118)
Run Code Online (Sandbox Code Playgroud)

请帮忙.

Xer*_*dea 18

传递空字符串进行查询时,我也收到了同样的错误.


Bar*_*rak 1

看来您的查询在not.

查看SQLite Docs,根据他们的说法,not您尝试使用它的方式并不存在(作为对您所在位置的否定)。

您的选择似乎不是:

NOT LIKE
NOT GLOB
NOT REGEXP
NOT MATCH
NOT BETWEEN
NOT IN
IS NOT
Run Code Online (Sandbox Code Playgroud)

其中大多数都需要在它们之前表达。

WHERE xxxx NOT MATCH yyyy
Run Code Online (Sandbox Code Playgroud)