仅提供问题解决思路
问题:
update book_table SET title='Tome's book' where book_id='1008'
则会出现单引号的冲突,Tome's 的单引号会被解释为结束,后面的内容就是错误的了
错解:
网上一般都在说带入title的时候将单引号替换为双单引号等等。之所以这样做还是因为他们仅仅使用了
SQLiteDatabase.execSQL()
类似这种接口而且替换省事。
正解:
使用SqliteStatement进行解决。
private final HashMap<String, SQLiteStatement> myStatements =
new HashMap<String, SQLiteStatement>();
//如果有重复的操作可以使用map进行存储,进行复用
private SQLiteStatement get(String sql) {
SQLiteStatement statement = myStatements.get(sql);
if (statement == null) {
statement = myDatabase.compileStatement(sql);
myStatements.put(sql, statement);
}
return statement;
}
// 更新title
private long updateTitle(String title){
final SQLiteStatement statement = get(
"UPDATE book_table SET title=? where book_id=?"
);
long result=-1;
synchronized (statement) {
statement.bindString(1, "Tome's book");
statement.bindLong(2, 1008);
//statement.bindNull(index); 如果title为null也可以使用此类接口
result=statement.executeUpdateDelete();//有些操作可能需要try catch一下,以实际项目为准,自行斟酌
}
return result;
}