Android SqLite异常:从数据库中删除时无法识别令牌



我试图删除一切从我的数据库称为全局包含sessionID的列表。每次用户登录时都会生成一个SessionID,因此数据库中不需要以前的SessionID,必须删除,因为它们将永远不会再次使用。我实现了一个方法来删除所有的sessionID的数据库中除了指定的一个,但我得到这个错误,当我运行我的代码:

" android.database.sqlite。当编译

时,SQLiteException:无法识别的令牌:"8a8878dc"(代码1):

如何解决这个问题?

这是我删除sessionID的方法

public void deleteAll(String sessionID) {
    SQLiteDatabase db = this.getWritableDatabase();
    db.delete(TABLE_SESSIONSTATE, KEY_SESSIONID + " != " + sessionID , null);
}

,它在下面的代码中运行:结果对象返回一个字符串,其中给出了我想使用的sessionID

SoapObject result = (SoapObject)envelope.bodyIn;
                if(result != null)
                {
                    globals = new Globals(getBaseContext());
                    String resultStr = result.getPropertyAsString(0);
                    resultStr = resultStr.replace("n", "");
                    String [] resultArr = resultStr.split("\^");
                    sessionID = resultArr[0];
                    globals.deleteAll(sessionID);
                }

在SQL中,字符串必须' In quotes'。

但是,为了避免这样的格式化问题,您应该使用参数:

db.delete(TABLE_SESSIONSTATE,
          KEY_SESSIONID + " != ?",
          new String[] { sessionID });

试试这个:

  • 创建从数据库中删除不需要的sessionID的Helper方法。
  • 创建另一个插入新SessionID的Helper方法
  • 调用先删除前一个sessionID的方法,然后再插入新的sessionID的方法。

最新更新