你有參數化查詢太...少的方式來實現這一目標:
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();
}
謝謝! db.rawQuery與db.execSQL一樣只是參數?另外,在你提供的3個例子中,你是否贊成其中的任何一個?如果是這樣,爲什麼? – PaulG
execSQL不應該用於SELECT/INSERT/UPDATE/DELETE ...如果你只需要1行然後選擇其中的3個(真的無所謂),如果你插入多行然後看我的編輯 – Selvin