我试图删除一切从我的数据库称为全局包含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的方法。