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

时间:2014-05-28 10:39:27

标签: java android sqlite

我试图删除名为Globals的数据库中的所有内容,其中包含一个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);
                }

2 个答案:

答案 0 :(得分:0)

在SQL中,必须在引号'中写入字符串。

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

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

答案 1 :(得分:0)

试试这个:

  • 创建Helper方法,从DB中删除不需要的sessionID。
  • 创建另一个插入新SessionID的Helper方法
  • 删除先前sessionID的Call方法首先按插入新One的方法。