У меня есть база данных SQLite, из которой мне нужно периодически удалять записи. Каков наилучший способ сделать это? У меня есть массив уникальных идентификаторов ПК. Я придумал 2 метода:
Использование подготовленного утверждения
int[] ids = {1,2,3,4,5}; //example only, will be built elsewhere
Database db = null;
try {
db = DataConnection.getInstance(); //my class to get the connection instance
db.beginTransaction();
Statement st = db.createStatement("DELETE FROM myTable WHERE id = ?");
st.prepare();
for (int i=0;i<ids.length;i++) {
st.bind(1, ids[i]);
st.execute();
st.reset();
}
db.commitTransaction();
} catch (FileIOException e) {
e.printStackTrace();
} catch (DatabaseException e) {
e.printStackTrace();
}
Или с помощью ключевого слова "in"
int[] ids = {1,2,3,4,5}; //example only, will be built elsewhere
Database db = null;
try {
db = DataConnection.getInstance();
//Util.JoinArray(int[] ids,char delim, char prepend, char postpend) returns a String of the ids separated by delim with prepend at the front and postpend at the end
Statement st = db.createStatement("DELETE FROM myTable WHERE id IN " + Util.joinArray(ids,',','(',')'));
st.prepare();
} catch (FileIOException e) {
e.printStackTrace();
} catch (DatabaseException e) {
e.printStackTrace();
}