我有一个 html 字符串,我想“按原样”存储在我的 SQLite 数据库中。html 字符串中的特殊字符阻止我的INSERT
语句存储它:
INSERT INTO myTable VALUES ('" + htmlString + "')
在 iOS 上,我使用参数化查询来完成此操作,并且效果很好。我怎样才能在 Android 上做到这一点?我已经为 Android 进行了 Google 参数化查询,但结果多种多样且不清楚。
在 Android 中,您也有参数化查询……实现这一目标的方法很少:
ContentValues vals = new ContentValues();
vals.putString("ColumnName", htmlString);
db.insert("myTable", null, vals);
或者
final SQLiteStatement insert = db.compileStatement("INSERT INTO myTable VALUES (?)");
insert.bindString(1, htmlString);
//edit: hehe forgot about most important thing
insert.executeInsert();
或者
db.rawQuery("INSERT INTO myTable VALUES (?)", new String[] {htmlString});
编辑:(插入多行)
如果您想插入多于 1 行,则在事务中执行(应该更快)并更喜欢第二种解决方案:
db.beginTransaction();
try {
final SQLiteStatement insert = db.compileStatement("INSERT INTO myTable VALUES (?)");
for(...){
insert.clearBindings();
insert.bindString(1, htmlString[N]);
//edit: hehe forgot about most important thing
insert.executeInsert();
}
db.setTransactionSuccessful();
} finally {
db.endTransaction();
}