更新后Android sqlite id丢失

时间:2016-04-26 21:16:41

标签: android sqlite sql-update android-syncadapter

在我更新syncAdapter中的对象后,我无法再通过id将其恢复。似乎更新后id丢失了。留下的是一个空对象。 这是我的源代码如何更新对象:

@Override
public void updateUserThread(Context ctxt, UserThread userThread, boolean notified)
{
    try
    {
        ContentValues values = new ContentValues();
        values.put(DBHandler.TOPIC, userThread.getTopic());
        if(userThread.getCreationDate() != null)
            values.put(DBHandler.USER_THREAD_CREATION_DATE, userThread.getCreationDate().getTime());

        values.put(DBHandler.THREAD_TYPE, Helper.threadTypeToString(userThread.getThreadType()));
        values.put(DBHandler.MEETING_PLACE, userThread.getMeetingPlace());
        values.put(DBHandler.SUBJECT, userThread.getSubject());
        values.put(DBHandler.SENT, Helper.convertBooleanToInt(userThread.isSent()));

        if(userThread.getStartDate() != null)
            values.put(DBHandler.START_DATE, userThread.getStartDate().getTime()); //Helper.getDateTime(

        values.put(DBHandler.FOR_ALL, userThread.isForAll());
        values.put(DBHandler.ID_SERVER, userThread.getIdServer());

        if(userThread.getAuthor() != null)
            values.put(DBHandler.ID_USER_FK, userThread.getAuthor().getIdUser());

        if(notified)
        {
            ctxt.getContentResolver().update(TeamChannelProvider.USER_THREAD_URI, values, DBHandler.ID_USER_THREAD + "=" + "?", new String[]{String.valueOf(userThread.getIdUserThread())});
        }
        else
        {
            SQLiteDatabase db = this.getWritableDatabase();
            db.beginTransaction();
            long status = db.update(TABLE_USER_THREAD, values, DBHandler.ID_USER_THREAD + "=?", new String[]{String.valueOf(userThread.getIdUserThread())});
            db.setTransactionSuccessful();
            db.endTransaction();

            Log.i(Constants.TAG, "Status: " + status);
        }
    }
    catch(Exception exc)
    {
        Log.e(Constants.TAG, "ERROR - DBHandlerTeamChannel -> updateUserThread", exc);
    }
    finally
    {
        Log.i(Constants.TAG, "UserThread updated with ID " + (notified ? "(notified) " : "not notified ") + userThread.getIdUserThread() + ", Server-ID: " + userThread.getIdServer());
    }
}

0 个答案:

没有答案