From 5bf67247d2e299f0586de65b2d024f1f835657e0 Mon Sep 17 00:00:00 2001 From: Vasu Nori Date: Tue, 16 Mar 2010 09:55:13 -0700 Subject: [PATCH] fix the way last insert rowid is returned if insert statement doesn't succeed, last inserted rowid shoudl return -1 - instead of returning rowid of the last successful insert that may have occurred years before this most recent insert statement failure. Change-Id: Ia517292afd58fdb600da900e0ee01fe051d6e618 --- core/java/android/database/sqlite/SQLiteStatement.java | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/core/java/android/database/sqlite/SQLiteStatement.java b/core/java/android/database/sqlite/SQLiteStatement.java index f29b69f56152e..7f484ffc05632 100644 --- a/core/java/android/database/sqlite/SQLiteStatement.java +++ b/core/java/android/database/sqlite/SQLiteStatement.java @@ -58,11 +58,10 @@ public class SQLiteStatement extends SQLiteProgram } /** - * Execute this SQL statement and return the ID of the most - * recently inserted row. The SQL statement should probably be an - * INSERT for this to be a useful call. + * Execute this SQL statement and return the ID of the row inserted due to this call. + * The SQL statement should be an INSERT for this to be a useful call. * - * @return the row ID of the last row inserted. + * @return the row ID of the last row inserted, if this insert is successful. -1 otherwise. * * @throws android.database.SQLException If the SQL string is invalid for * some reason @@ -75,7 +74,7 @@ public class SQLiteStatement extends SQLiteProgram try { native_execute(); mDatabase.logTimeStat(mSql, timeStart); - return mDatabase.lastInsertRow(); + return (mDatabase.lastChangeCount() > 0) ? mDatabase.lastInsertRow() : -1; } finally { releaseReference(); mDatabase.unlock();