метод обновления с использованием значений содержимого - PullRequest
0 голосов
/ 17 ноября 2018

Helper

public boolean mMessagesSent(String ID,int Data) {
    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues contentValues = new ContentValues();
    contentValues.put(KEY_ID, ID);
    contentValues.put(KEY_MESSAGES_SENT, Data);
    db.update(TABLE_USER_DATA, contentValues, null, null);
    return true;
}     

Активность

mainData.mTotalMessages("MyData", +1);
        mainData.mTotalMessagesSent("MyData",+1);
        mainData.mMessages(MessageRecieverId,+1);
        mainData.mMessagesSent(MessageRecieverId,+1);

Это правильный метод для обновления данных ... Я хочу увеличить значение int данных на 1, поэтому я поставил +1, но при получении данных значение все равно остается пустым

КОД ПОСЛЕ СЛЕДУЮЩЕГО ПЕРВОГО ОТВЕТА

public boolean mMessagesSent(String ID,int Data) {
    MainData mainData = new MainData(getApplicationContext());
    SQLiteDatabase db = mainData.getWritableDatabase();
    String newId = ID;
    int newData = Data;
    MainData helper = new MainData(this); //Change the name to your Helper Class name
    Cursor data = helper.getData();
    while (data.moveToNext()) {
        newId = data.getString(data.getColumnIndex("Data"));
        newData = data.getInt(data.getColumnIndex("TotalMessagesSent"));
    }
    ContentValues contentValues = new ContentValues();
    contentValues.put(KEY_DATA, newId);
    contentValues.put(KEY_MESSAGES_SENT, (newData + 1)); //Change the value of newData(which is actually your old value) by incrementing
    db.update(TABLE_USER_DATA, contentValues, null, null);
    return true;
}

Fetching

final MainData myDBHlpr = new MainData(getActivity());

    Cursor csr = myDBHlpr.getAllQuestions(getActivity());
    while (csr.moveToNext()) {

        mTotalMessagesSent.setText(csr.getString(1));
        mTotalMessagesRecieved.setText(csr.getString(csr.getColumnIndex("TotalMessagesRecieved")));
        mTotalMessages.setText(csr.getString(csr.getColumnIndex("TotalMessages")));

    }

        csr.close();

1 Ответ

0 голосов
/ 17 ноября 2018

Это правильный метод для обновления данных ... Я хочу увеличить значение int данных на 1, поэтому я поставил +1, но при извлечении данных значение все еще остается пустым

Если вы намеревались увеличивать существующее значение данных один раз при каждом вызове функции mMessagesSent ()

Вы можете сначала взять значение из базы данных, если оно существуети увеличьте значение.Создайте функцию в Helper, как показано ниже

public Cursor getData(){

    SQLiteDatabase db = this.getWritableDatabase();
    String query = "SELECT * FROM " + TABLE_NAME;

    return db.rawQuery(query, null);
}

. Она вернет курсор в базу данных, чтобы прочитать значения в базе данных. Не помещайте функцию mMessagesSent в класс Helper, поместите ее в Activity .Теперь в вашей функции mMessagesSent вызовите вышеуказанную функцию getData () , как показано

public void mMessagesSent() {
SQLiteDatabase db = this.getWritableDatabase();
String newId = "default value whatever you have specified";//These two lines may be removed and put outside. If you already have it, then 
int newData = 0;                                           //not required to declare here at all, just replace with those variable names
HelperClassName helper = new HelperClassName(this); //Change the name to your Helper Class name
Cursor data = helper.getData();
while(data.moveToNext()){
    newId = data.getString(0);
    newData = data.getInt(1);
}
ContentValues contentValues = new ContentValues();
contentValues.put(KEY_ID, ID);
contentValues.put(KEY_MESSAGES_SENT, (newData+1)); //Change the value of newData(which is actually your old value) by incrementing
long returnVariable = db.update(TABLE_USER_DATA, contentValues, null, null);
if(returnVariable == -1){
    //-1 means there was an error updating the values
}
else{
//the return value if successful will be number of rows affected by the update
}
} 

Надеюсь, вы получили свой ответ.

...