我在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'
那么,如何以最佳方式更新这些记录。提前谢谢。
答案 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攻击的方法。