Android 如何知道SQLite查询何时完成
好的,我得到了这个改造调用,它接收一个对象列表并将插入到本地SQLite数据库中。我想显示一条消息,说明操作成功,按下Ok按钮将打开一个新活动 如何检查查询是否已完成,以便显示消息Android 如何知道SQLite查询何时完成,android,database,sqlite,retrofit,Android,Database,Sqlite,Retrofit,好的,我得到了这个改造调用,它接收一个对象列表并将插入到本地SQLite数据库中。我想显示一条消息,说明操作成功,按下Ok按钮将打开一个新活动 如何检查查询是否已完成,以便显示消息 final ContactApi contactApi = retrofit.create(ContactApi.class); Call<List<Contact>> callContact = contactApi.getContact(token); callContact.enque
final ContactApi contactApi = retrofit.create(ContactApi.class);
Call<List<Contact>> callContact = contactApi.getContact(token);
callContact.enqueue(new Callback<List<Contact>>() {
@Override
public void onResponse(Response<List<Contact>> response, Retrofit retrofit) {
List<Contact> contactList = response.body();
if (contactList != null) {
try {
DBHelper dbHelper = new DBHelper(TokenActivity.this, token);
SQLiteDatabase conn = dbHelper.getWritableDatabase();
RepoContact repocontact = new RepoContact(conn);
// Inserts each contact into the database
for (Contatc c : contactList) {
repositorioCadastro.inserirCadastro(c);
Log.i("ACTTOKEN", "Contact insert ID: " + c.getId());
}
} catch (SQLiteException e) {
Log.i("ACTTOKEN", "Faillure on insert: " + e.getMessage());
}
final ContactApi ContactApi=改装.create(ContactApi.class);
调用callContact=contactApi.getContact(令牌);
callContact.enqueue(新回调(){
@凌驾
公共响应(响应、改装){
List contactList=response.body();
如果(联系人列表!=null){
试一试{
DBHelper DBHelper=新的DBHelper(TokenActivity.this,token);
SQLiteDatabase conn=dbHelper.getWritableDatabase();
RepoContact RepoContact=新的RepoContact(conn);
//将每个联系人插入数据库
用于(续c:联系人列表){
寄主寄主(c);
Log.i(“ACTTOKEN”,“联系人插入ID:+c.getId());
}
}catch(sqlitee异常){
Log.i(“ACTTOKEN”,“插入时失败诱饵:”+e.getMessage());
}
}使用侦听器()将代码包装在
try{…}finally{…}
块中,并使用transactionListner
检查事务中的一切是否正常,以及try/finally中的一切
您拥有的很好,只需尝试添加finally
块即可。。
像这样的
db.beginTransaction();
try {
...
db.setTransactionSuccessful();
} finally {
db.endTransaction();
}
使用侦听器()将代码包装在
try{…}finally{…}
块中,并使用transactionListner
检查事务中的所有内容以及try/finally中的所有内容是否正常
您拥有的很好,只需尝试添加finally
块即可。。
像这样的
db.beginTransaction();
try {
...
db.setTransactionSuccessful();
} finally {
db.endTransaction();
}
当查询成功执行时,可以选中insert语句返回long,然后选择long值
db.insert()
返回新插入行的行ID,或-1如果发生错误您可以选中insert语句,在查询成功执行时返回long,然后选择long值
db.insert()
返回新插入行的行ID,如果发生错误,返回-1。您可以尝试其他循环,如下所示:
for(int i = 0; i < contactList.size(); i++) {
Contact c = contactList.get(i);
repositorioCadastro.inserirCadastro(c);
Log.i("ACTTOKEN", "Contact insert ID: " + c.getId());
if(i == (contactList.size() - 1)) {
// DO SOMETHING HERE
}
}
for(int i=0;i
您可以尝试不同的循环,如下所示:
for(int i = 0; i < contactList.size(); i++) {
Contact c = contactList.get(i);
repositorioCadastro.inserirCadastro(c);
Log.i("ACTTOKEN", "Contact insert ID: " + c.getId());
if(i == (contactList.size() - 1)) {
// DO SOMETHING HERE
}
}
for(int i=0;i
Ok,我添加了try{…}finally{…}块和监听器,现在为了测试,我必须在SQLiteTransactionListener的onCommit()或onRollback()方法上显示消息?是的。如果操作成功,它将转到finally()然后您可以显示消息。谢谢,它可以工作!但我想知道如何通过多个查询实现这一点?我有另一个屏幕,可以进行5次改装调用,并将其插入5个不同的表中,因此如果我最终在每个表上定义一个变量,然后在onCommit()上检查它们方法,测试将在每个查询完成后进行,对吗?嗯,我不知道您的代码,所以我不能说,但您可以在try块中运行5个查询,并在finally()块中执行操作。@Rafael“在每个查询完成后”应该做什么意思是?事务的目的是在成功结束时完成所有查询。如果要独立执行它们,必须在不同的事务中执行。好的,我添加了try{…}finally{…}块和侦听器,现在要测试,我必须执行代码以在onCommit()或onRollback()上显示消息SQLiteTransactionListener的方法?是。若操作成功,它将转到finally()然后您可以显示消息。谢谢,它可以工作!但我想知道如何通过多个查询实现这一点?我有另一个屏幕,可以进行5次改装调用,并将其插入5个不同的表中,因此如果我最终在每个表上定义一个变量,然后在onCommit()上检查它们方法,测试将在每个查询完成后进行,对吗?嗯,我不知道您的代码,所以我不能说,但您可以在try块中运行5个查询,并在finally()块中执行操作。@Rafael“在每个查询完成后”应该做什么意思?如果事务成功结束,则事务的目的是完成所有查询。如果要独立执行这些查询,则必须在不同的事务中执行。