帮助程序
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;
}
获取
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();
这是更新数据的正确方法吗。。。我想将数据的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
}
}
我希望你能得到答案。