Я использую ниже запрос для вставки или замены "числа" и "времени" в таблице "Контакты". Есть ли способ вставить или заменить несколько записей в SQLite для Android?
"Insert or replace into Contacts (_id, number, status) values ((select _id from Contacts where number = '123456'), '123456','sent');"
Вы можете улучшить скорость для многократной/пакетной базы данных. Вставить или заменить операцию, используя концепцию транзакции и compileStatement, чтобы ваш запрос был скомпилирован только один раз.
Пример:
db.beginTransaction();
try {
String sql = "Insert or Replace into Items (itemNumber, description,unitOfMeasure, weight) values(?,?,?,?)";
ArrayList<ItemMaster> itemsList = // Retrieve your items list here
for(int i=0;i<itemsList.size();i++)
{
SQLiteStatement insert = db.compileStatement(sql);
insert.bindString(1, item.getItemNumber());
insert.bindString(2, item.getItemDescription1());
insert.bindString(3, item.getSellingUOM());
insert.bindDouble(4, item.getWeight());
insert.execute();
}
db.setTransactionSuccessful();
} finally {
db.endTransaction();
}
Попробуйте этот код для вставки нескольких записей
public void insertIntoTable(ArrayList<YourModelClass> alist) {
SQLiteDatabase db = this.getWritableDatabase();
String sql = "insert into tableName (colomname1,colomnname2) values(?,?)";
db.beginTransaction();
SQLiteStatement stmt = db.compileStatement(sql);
for (int i = 0; i < alist.size(); i++) {
stmt.bindString(1, alist.get(i).getMethod1());
stmt.bindString(2, alist.get(i).getMethod2());
stmt.execute();
stmt.clearBindings();
}
db.setTransactionSuccessful();
db.endTransaction();
db.close();
}
Также создайте класс модели, чтобы указать имена переменных. например:
class ModelClass {
String var1,var2;
public void setVar1(String var1)
{
this.var1=var1;
}
public String getVar1()
{
return var1;
}
public void setVar2(String var2)
{
this.var2=var2;
}
public String getVar2()
{
return var2;
}
}
Не уверен, что я понимаю запрос, но похоже, что вы можете просто обновить вместо вставки или замены (выбор вернет null
, если номер не найден)
Update Contacts set status = 'sent' where number in (...)
_id
вы хотите, если это новая запись? null
выглядит очень плохо