-1

在下面的代码中 db.setTransactionSuccessful(); 给出错误无法访问的代码。谁能告诉我如何解决这个问题?

public boolean updateDiaryEntry(String title, long rowId)
        {

            ContentValues newValue = new ContentValues();
            newValue.put(Constants.TITLE_NAME, title);

            db.beginTransaction();


            return db.update(Constants.TABLE_NAME , newValue , Constants.KEY_ID + "= ?" , 
                new String[]{ Double.valueOf(rowId).toString() })>0;

            db.setTransactionSuccessful();
            db.endTransaction();    

        }
4

2 回答 2

2

您正在返回该行之前的行,这将退出该函数。

于 2014-06-06T16:13:52.540 回答
1

从函数返回后有 2 行代码,这些行将永远不会执行,因为您已经离开了函数。这就是您收到无法访问的代码消息的原因。您不希望在 return 语句之后有代码行:

return db.update(Constants.TABLE_NAME , newValue , Constants.KEY_ID + "= ?" , 
            new String[]{ Double.valueOf(rowId).toString() })>0;   //returned from function on this line

db.setTransactionSuccessful(); //therefore you never get to this line
db.endTransaction();  

相反,您可能想做这样的事情:

db_result = db.update(Constants.TABLE_NAME , newValue , Constants.KEY_ID + "= ?" , 
            new String[]{ Double.valueOf(rowId).toString() })>0;

if(db_result){
     db.setTransactionSuccessful(); //Now you can do this conditional on the result of the update
}
db.endTransaction();
return db_result;

通过创建一个变量来存储更新数据库的结果,您可以在从函数返回之前执行与数据库相关的清理/关闭函数。

于 2014-06-06T16:15:49.937 回答