更新在Android应用程序中的SQLite数据库中不起作用

时间:2015-12-16 16:11:20

标签: android sqlite insert-update

我正在开发一个Android项目。其中我使用了SMS Scheduling。为此,我创建了SQLite数据库。在数据库中创建了SMSTABLE。在SMSTABLE中,列名为“status”。其中定义了草稿消息,预定,已发送或未发送消息。 For draft status = 0, for scheduled status = 1, for sent status = 2,for unsent status = 3。默认情况下,状态值设置为1.当我更新草稿状态时,它不起作用(更新到db)。

以下是我的DBHepler Class代码的一些部分:

private final String DATABASE_CREATE_SMS_TABLE = "create table " + DATABASE_SMS_TABLE
        + " ("
        + KEY_ID + " integer primary key autoincrement, "
        + KEY_MESSAGE + " text, "
        + KEY_DATE + " text, "
        + KEY_START_TIME_MILLIS + " long, "
        + KEY_END_TIME_MILLIS + " long, "
        + KEY_MSG_PARTS + " integer default 0, "
        + KEY_STATUS + " integer default 1, "
        + KEY_REPEAT_MODE + " integer, "
        + KEY_REPEAT_STRING + " text);";


 /***
 * @param message
 * @param date
 * @param parts        //* @param timeInMilis
 * @param repeatMode
// * @param repeatString
 * @return smsId for the newly scheduled SMS
 * @detail Schedules a new SMS using the details passed as parameters
 */
public long scheduleSms(String message, String date, int parts, long startTimeInMilis, long endTimeInMilis, int repeatMode) {
    ContentValues addValues = new ContentValues();

    addValues.put(KEY_MESSAGE, message);
    addValues.put(KEY_DATE, date);
    // addValues.put(KEY_TIME_MILLIS, timeInMilis);
    addValues.put(KEY_START_TIME_MILLIS, startTimeInMilis);
    addValues.put(KEY_END_TIME_MILLIS, endTimeInMilis);
    addValues.put(KEY_MSG_PARTS, parts);
    addValues.put(KEY_REPEAT_MODE, repeatMode);
 //   addValues.put(KEY_REPEAT_STRING, repeatString);

    return db.insert(DATABASE_SMS_TABLE, null, addValues);
}

/***
 * @param smsId
 * @detail Sets an SMS as Draft
 */
public void setAsDraft(long smsId) {
    setStatus(smsId, Constants.SMS_STATUS_DRAFT);
}


/***
 * @param smsId
 * @param status
 * @detail Sets a particular status for an SMS. Status is passed as parameter
 */
public void setStatus(long smsId, int status) {
    ContentValues cv = new ContentValues();
    cv.put(KEY_STATUS, status);

    db.update(DATABASE_SMS_TABLE, cv, KEY_ID + "=" + smsId, null);
}

以下是我调用更新草稿状态的代码:

 dbHelper.open();
                boolean isDraft = false;
                for (int i = 0; i < messagesList.size(); i++) {
                    parts = smsManager.divideMessage(messagesList.get(i).getMessage());
                    long smsId = dbHelper.scheduleSms(messagesList.get(i).getMessage(), dateString, parts.size(), startTime, endTime, defaultRepeatMode);
                    dbHelper.setAsDraft(smsId);
                    isDraft = true;
                }

0 个答案:

没有答案