임라는 오류 메시지가 점점 :그런 표 (코드 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);
}
죄송 합니다만, 여전히 동일한 오류를 보여줍니다. – user3408604
예외는'KEY_HOURS'를 보여 주지만 당신의 코드는 그것을 가지고 있지 않습니다. 오류는 유사합니다. 세부 사항이 약간 다를 수 있습니다. 테스트중인 앱을 실제로 업데이트 했습니까? – laalto
죄송합니다. 다른 데이터베이스를 실수로 붙인 같은 문제가있는 다른 데이터베이스가 있습니다. 예, 코드를 업데이트했지만 작동하지 않았습니다. – user3408604