2014-04-13 4 views
0

임라는 오류 메시지가 점점 :그런 표 (코드 1)

android.database.sqlite.SQLiteException : 그런 표는 DATABASE_TABLE 곳 KEY_ROWID에서 KEY_HOURS을 선택 다른 활동이 upDateUser (문자열 돈)을 호출 할 때 = 0

이 문제가 발생합니다

나는 제거하고 그것이 그 졸 그러나이 같은 다른 유사한 질문에 언급 된 것처럼 응용 프로그램을 다시 설치 시도

ution이 나 자신을 위해 작동하지 않습니다.

내 데이터베이스 클래스 코드 : KEY_CREDITS, DATABASE_TABLE 및 리터럴 인용 된 문자열 밖으로 KEY_ROWID 그 상수 변수의 값이 대신 사용되도록 당신이 끌어한다 여기에서

package com.example.parkangel; 

public class UDbHelper extends SQLiteOpenHelper 
{ 
    private static UDbHelper instance; 
    private SQLiteDatabase ourDatabase; 

    private static final String DATABASE_NAME = "UserData.db"; 
    private static final String DATABASE_TABLE = "UserTable"; 
    private static final int DATABASE_VERSION = 1; 

    public static final String KEY_ROWID = "_id"; 
    public static final String KEY_PFNAME = "payeeFname"; 
    public static final String KEY_PSNAME = "payeeSname"; 
    public static final String KEY_CARD = "card"; 
    public static final String KEY_CREDITS = "credits"; 
    public static final String KEY_ADDMONEY = "addmoney"; 

    public UDbHelper(Context context) 
    { 
     super(context, DATABASE_NAME, null, DATABASE_VERSION); 
    } 

    public static UDbHelper getInstance(Context context) 
    { 
     if (instance == null) 
     { 
      instance = new UDbHelper(context); 
     } 
     return instance; 
    } 

    @Override 
    public void onCreate(SQLiteDatabase db) 
    { 
     // TODO Auto-generated method stub 
     db.execSQL("CREATE TABLE " + DATABASE_TABLE + " (" + 
       KEY_ROWID + " INTEGER PRIMARY KEY AUTOINCREMENT, " 
            + KEY_PFNAME + " TEXT NOT NULL, " + KEY_PSNAME + " 
            TEXT NOT NULL, " + KEY_CARD + " INTEGER NOT NULL, " 
            + KEY_CREDITS + " INTEGER NOT NULL, " + 
            KEY_ADDMONEY + " INTEGER NOT NULL);"); 

     ContentValues values = new ContentValues(); 
     values.put(KEY_PFNAME, "Tutku"); 
     values.put(KEY_PSNAME, "Erbil"); 
     values.put(KEY_CARD, 12345678); 
     values.put(KEY_CREDITS, 5); 
     values.put(KEY_ADDMONEY, 1); 
     db.insert(DATABASE_TABLE, null, values); 
    } 

    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) 
    { 
     // TODO Auto-generated method stub 
     db.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE); 
     onCreate(db); 
    } 

    public synchronized UDbHelper open() throws SQLException 
    { 
     System.out.println ("running open"); 
     if(ourDatabase == null || !ourDatabase.isOpen()) 
     ourDatabase = getWritableDatabase(); 
     return this; 
    } 

    public String getData() 
    { 
     // TODO Auto-generated method stub 
     String[] columns = new String[] {KEY_ROWID, KEY_PFNAME, KEY_PSNAME, 
         KEY_CARD, KEY_CREDITS}; 
     Cursor c = ourDatabase.query(DATABASE_TABLE, columns, null, null, 
                null, null, null); 
     String result = " "; 

     int iRow = c.getColumnIndexOrThrow(KEY_ROWID); 
     int iPFname = c.getColumnIndexOrThrow(KEY_PFNAME); 
     int iPSname = c.getColumnIndexOrThrow(KEY_PSNAME); 
     int iCard = c.getColumnIndexOrThrow(KEY_CARD); 
     int iCredits = c.getColumnIndexOrThrow(KEY_CREDITS); 

     for(c.moveToFirst(); !c.isAfterLast(); c.moveToNext()){ 
      result = result + c.getString(iRow) + " " + 
          c.getString(iPFname) + " " + c.getString(iPSname) + " " + 
          c.getString(iCard) + " " + c.getString(iCredits) + "\n"; 
     } 
     return result; 
    } 

    public List<Integer> getMoneytoadd() 
    { 
     List<Integer> list = new ArrayList<Integer>(); 

     // Select All Query 
     String selectQuery = "SELECT * FROM " + DATABASE_TABLE; 

     SQLiteDatabase db = this.getReadableDatabase(); 
     Cursor cursor = db.rawQuery(selectQuery,  
            null);//selectQuery,selectedArguments 

     // looping through all rows and adding to list 
     if (cursor.moveToFirst()) { 
      do { 
       list.add(cursor.getInt(5));//adding 2nd column data 
      } while (cursor.moveToNext()); 
    } 
     // return hours 
     return list; 
} 

      /* public int getcurrentmoney() 
    { 
     // TODO Auto-generated method stub 
     String[] columns = new String[] {KEY_CREDITS}; 
     Cursor c = ourDatabase.query(DATABASE_TABLE, columns, null, null, 
                null, null, null); 
     int result = 0; 

     int iCredits = c.getColumnIndexOrThrow(KEY_CREDITS); 

     for(c.moveToFirst(); !c.isAfterLast(); c.moveToNext()){ 
      result = c.getInt(iCredits); 
     } 
     return result; 
    }*/ 

    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); 
    } 

답변

2

:

String selectQuery = "SELECT KEY_CREDITS from DATABASE_TABLE where 
           KEY_ROWID = " + 0; 

로 변경

+0

죄송 합니다만, 여전히 동일한 오류를 보여줍니다. – user3408604

+0

예외는'KEY_HOURS'를 보여 주지만 당신의 코드는 그것을 가지고 있지 않습니다. 오류는 유사합니다. 세부 사항이 약간 다를 수 있습니다. 테스트중인 앱을 실제로 업데이트 했습니까? – laalto

+0

죄송합니다. 다른 데이터베이스를 실수로 붙인 같은 문제가있는 다른 데이터베이스가 있습니다. 예, 코드를 업데이트했지만 작동하지 않았습니다. – user3408604

1

사용하려고 시도하십시오 :

String selectQuery = "SELECT " + KEY_CREDITS + " from " + DATABASE_TABLE+ " where " + 
            KEY_ROWID + " = 0"; 
+0

죄송 합니다만,이 답변에도 같은 오류가 표시됩니다. – user3408604

관련 문제