2014-04-13 2 views
0

크레딧의 시작 값이 '5'로 설정된 사용자가 있습니다. 이제 사용자가 해당 번호에 추가 할 수있는 메소드를 만들고 싶습니다. 2. 그러면 데이터베이스 열의 행이 7이됩니다.현재 값에 추가 SQLite

그러나 현재 수행 할 수있는 방법이 없습니다.

현재 방법

public void upDateUser(String money) 
    { 
     String selectQuery = "SELECT " + KEY_CREDITS + " from " + 
           DATABASE_TABLE + " where " + KEY_ROWID + " = " + 0; 
     SQLiteDatabase db = this.getWritableDatabase(); 
     Cursor c = db.rawQuery(selectQuery, null); 
     int oldMoney = 0; 
     if (c.moveToFirst()) 
     {   
      oldMoney = Integer.parseInt(c.getString(4)); 
     } 
     ContentValues cvUpdate = new ContentValues(); 
     cvUpdate.put(KEY_CREDITS, (oldMoney + money)); 
     String filter = KEY_ROWID + "=" + 0; 
     db.update(DATABASE_TABLE, cvUpdate, filter, null); 
    } 

난 후 다른 활동에 위의 메소드를 호출

public void onClick(View arg0) 
{ 
    switch (arg0.getId()){ 
    case R.id.topup: 

     boolean work = true; 
     try{ 
     String money = spinner.getSelectedItem().toString(); 

     UDbHelper ud = new UDbHelper(this); 
     ud.open(); 
     ud.upDateUser(money); 
     ud.close(); 
+0

글쎄, 뭐가 문제 야? 오류가 있습니까? – mok

+0

그것은 단지 아무것도하지 않습니다. 나는 기능을 수행하기 위해 무엇을 놓치고 있는지 모른다. – user3408604

+0

오류가 발생합니다. 'c.getString (4)'확실히 충돌합니다. –

답변

0

변경 다음 단계는 oldmoney

의 값을 얻기 위해 oldMoney = c.getInt (c.getColumnIndex (KEY_CREDITS));

또한 정수 합계 값을 얻기 위해 문자열을 추가 할 수 없습니다. 따라서 합계를 찾기 전에 정수 값으로 변환하십시오.

int money = Integer.parseInt (money);

당신이 KEY_CREDITS 컬럼에 대한 문자열 데이터 유형은 다음 총을 발견 한 후

cvUpdate.put (KEY_CREDITS, 한 String.valueOf (oldMoney + 돈))를 업데이트하기 전에 문자열로 다시 변환해야하는 경우;