如何使用Android中的ormlite将具有特殊字符的记录列表更新到sqlite表中

时间:2015-02-19 11:34:30

标签: android sqlite ormlite

我在Android应用中使用ormlite进行数据库操作。我想一次更新大约1000条记录。但是,如果这些记录有任何特殊字符,如'/ \%,我会得到以下异常。

java.sql.SQLException: Problems executing Android statement: UPDATE `staticresource`
    SET `Content` = 'Tick next to member and add by clicking on \'Invite Selected\'
    button to create invite list.' ,`Id` = '3' WHERE `Alias` = 'tm' 

那么,如何以最佳方式更新这些记录。提前谢谢。

2 个答案:

答案 0 :(得分:1)

你可以逃避特殊角色的使用 DatabaseUtils.sqlEscapeString();

String updateString = DatabaseUtils.sqlEscapeString("Tick next to member and add 
by clicking on \'Invite Selected\' button to create invite list.");

updateString可以传递给ormlite更新方法。

答案 1 :(得分:0)

  

如何以最佳方式更新这些记录。

正确的做法是使用UpdateBuilder结合SelectArg(这是一个糟糕的名字)。 SelectArg将使用? SQL功能,在这种情况下,您的字符串可以包含特殊字符而不会出现问题。

UpdateBuilder ub = dao.updateBuilder();
updateBuilder.where().eq("Alias", "tm");
updateBuilder.updateColumnValue("Content",
    new SelectArg("... on \'Invite Selected\' button to ..."));
updateBuilder.update();

这将生成如下内容:

 UPDATE `staticresource` SET `Content` = ? WHERE `Alias` = 'tm'

它会将?值设置为您的字符串。你不必担心逃避任何事情。这也是您保护用户输入免受SQL injection攻击的方法。