1
저는 프로그램을 작성하고 있습니다. 어떤 곳에서는 로컬 데이터베이스에 값을 삽입하려고합니다. 하지만 삽입 후 DB를 확인하면 비어 있습니다.ContentValues를 삽입하면 Android SQLite가 비어 있습니다.
public class LeaderBase extends SQLiteOpenHelper implements BaseColumns {
private static final String DATABASE_NAME = "leader_database.db";
private static final int DATABASE_VERSION = 1;
public static final String TABLE_NAME = "leader_board";
public static final String UID = "_id";
public static final String USERNAME = "username";
public static final String USERMONEY = "usermoney";
public static final String USERTIME = "usertime";
public static final String UGAMETYPE = "ugametype";
private static final String SQL_CREATE_ENTRIES = "CREATE TABLE "
+ TABLE_NAME + " (" + UID + " INTEGER PRIMARY KEY AUTOINCREMENT,"
+ USERNAME + " VARCHAR(255),"
+ USERMONEY + " BIGINT,"
+ USERTIME + "INT,"
+ UGAMETYPE + "INT"+
");";
private static final String SQL_DELETE_ENTRIES = "DROP TABLE IF EXISTS "
+ TABLE_NAME;
public LeaderBase(Context context) {
// TODO Auto-generated constructor stub
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
db.execSQL(SQL_CREATE_ENTRIES);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
db.execSQL(SQL_DELETE_ENTRIES);
onCreate(db);
}
}
문제는 내가 확인하면 값이 제로입니다 check_count 것입니다 : 여기에 코드
LeaderBase sqh = new LeaderBase(this);
SQLiteDatabase sqdb = null;
if (checkDataBase()){
sqdb = SQLiteDatabase.openDatabase("/data/data/com.example.test7/databases/leader_database.db", null, 0);
}
else{
}
sqdb = sqh.getWritableDatabase();
ContentValues cv = new ContentValues();
cv.put(LeaderBase.USERNAME, String.valueOf(nameRes));
cv.put(LeaderBase.USERMONEY, moneyRes);
cv.put(LeaderBase.USERTIME, timeRes);
cv.put(LeaderBase.UGAMETYPE, gtype);
sqdb.insert(LeaderBase.TABLE_NAME, null, cv);
Cursor cursor2 = sqdb.query(LeaderBase.TABLE_NAME, new String[] {
LeaderBase._ID, LeaderBase.USERNAME },
null, // The columns for the WHERE clause
null, // The values for the WHERE clause
null, // don't group the rows
null, // don't filter by row groups
null // The sort order
);
int check_count = cursor2.getCount();
sqdb.close();
sqh.close();
LeaderBase 클래스의 코드입니다. 데이터베이스가 비어 있습니다. 무엇이 문제입니까?
모든 답변 주셔서 감사합니다. 나는 당신은 당신의 열로 다음에 하나의 공간을 추가하는 것을 잊었다 때문에 예외를 얻고있다 생각
예, 실수가있었습니다. 감사합니다. 그러나 문제는 여전히 남아 있습니다. –
@ 146percentRussian, 기존 응용 프로그램을 삭제 한 다음 동일한 코드를 다시 실행하십시오. – Kedarnath
삭제 후 작동했습니다! –