1

我有一个 html 字符串,我想“按原样”存储在我的 SQLite 数据库中。html 字符串中的特殊字符阻止我的INSERT语句存储它:

INSERT INTO myTable VALUES ('" + htmlString + "')

在 iOS 上,我使用参数化查询来完成此操作,并且效果很好。我怎样才能在 Android 上做到这一点?我已经为 Android 进行了 Google 参数化查询,但结果多种多样且不清楚。

4

1 回答 1

2

在 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();
}
于 2012-12-06T15:56:08.217 回答