1

「そのまま」SQLite dbに保存したいhtml文字列があります。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});

編集:(複数の行を挿入)

複数の行を挿入する場合は、トランザクションでそれを実行し(より高速である必要があります)、2番目のソリューションを優先します。

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 に答える