Java:在前一行完成运行之前执行该行?

Java:在前一行完成运行之前执行该行?,java,android,sqlite,Java,Android,Sqlite,首先对不起我的英语不好,所以我只想问我的问题 我写了我的消息来源 db.execSQL(String.format("DELETE FROM 'myTable' WHERE id=%d", i)); db.execSQL(String.format("UPDATE 'myTable' SET id=%d WHERE id=%d", i, i+1); refreshList(); refreshList()获取myTable表的行,并使用新建ArrayList将ListAdapter设置为Lis

首先对不起我的英语不好,所以我只想问我的问题

我写了我的消息来源

db.execSQL(String.format("DELETE FROM 'myTable' WHERE id=%d", i));
db.execSQL(String.format("UPDATE 'myTable' SET id=%d WHERE id=%d", i, i+1);
refreshList();
refreshList()
获取myTable表的行,并使用
新建ArrayList
将ListAdapter设置为ListView

但当它转到refreshList函数时,它会显示以前的数据库内容

有什么问题吗

编辑

这是我写的全部代码

SQLiteDatabase db;

db = mHelper.getWritableDatabase();

db.execSQL(String.format("DELETE FROM '_CTGLIST' WHERE id=%d", i));
db.execSQL(String.format("UPDATE '_CTGLIST' SET id=%d WHERE id=%d", i, i+1));

db.close();

refreshList();

private void refreshList(){
ArrayList mCategoryList=新的ArrayList;
sqlitedb数据库;
光标;
db=mHelper.getReadableDatabase();
cuCategory=db.rawQuery(“按id ASC从“\u CTGLIST”顺序中选择*”,null);
while(cuCategory.moveToNext()){
添加(cuCategory.getString(0));
}
db.close();
//并在此处设置列表适配器。
//我不会在这里写这部分代码。
}

看起来您的查询是先执行而不是提交的,然后您在refreshList方法中使用了一个新连接,因此它将为提交的数据而不是尚未提交的数据提供一个结果。

首先,为什么要重写行ID?这是一种严重的代码气味。此外,如果没有
refreshList()
方法,或者没有打开数据库连接的代码,就无法判断发生了什么。此外,不要像这样构建动态SQL。始终使用参数化SQL。虽然在这种情况下不存在SQL注入的风险,但养成良好的习惯是值得的。您能向我们展示完整的代码吗?您如何处理此块中的异常?还有,你希望发生什么?如果I=1234,则会删除此记录,然后尝试将其id设置为12345。这应该会更新零行,因为第1234行已被删除。忽略我以前的评论,还有,什么。。。我看错了问题,无法编辑注释。@chrylis我是第一个研究数据库相关编码的人,所以我真的不知道好的代码是什么。这个答案只说明refreshList使用不同的连接(在同一个连接/事务中,COMMIT意味着nothing)是有意义的。您能提供有关refreshList()的更多详细信息吗方法从post开始,不清楚是否存在不同的连接或使用相同的连接。因此,有充分的理由认为刷新列表正在使用一个新的连接,这将超出您的事务范围。为了确认,是否可以在调用RefreshList之前提交您的事务我用源代码更新了我的线程,因此请检查。@Alfred Woo:尝试开始并关闭事务,并在关闭连接之前将事务标记为成功。
private void refreshList() {
    ArrayList<String> mCategoryList = new ArrayList<String>;
    SQLiteDatabase db;
    Cursor cursor;

    db = mHelper.getReadableDatabase();
    cuCategory = db.rawQuery("SELECT * FROM '_CTGLIST' ORDER BY id ASC;", null);
    while (cuCategory.moveToNext()) {
        mCategoryList.add(cuCategory.getString(0));
    }
    db.close();
    //and set list adapter here.
    //i won't write this part of code in here.
}