2014-03-05 2 views
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 클래스의 코드입니다. 데이터베이스가 비어 있습니다. 무엇이 문제입니까?

모든 답변 주셔서 감사합니다. 나는 당신은 당신의 열로 다음에 하나의 공간을 추가하는 것을 잊었다 때문에 예외를 얻고있다 생각

답변

2

,

+ USERTIME + "INT,"+ UGAMETYPE + "INT"+ 

나는, 다음 줄을 업데이트하여 그 라인에 당신을 제안

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"+");"; 

참고 :이 변경을 수행 한 후에는 장치/에뮬레이터에서 이전 응용 프로그램을 제거한 다음 다시 시도하기 만하면됩니다. 이것의 실제 이유는 테이블 생성 쿼리가 onCreate() 메서드에서 실행될 것이라는 것입니다. 따라서 이것을 호출하려면 이전 응용 프로그램을 제거해야합니다.

+0

예, 실수가있었습니다. 감사합니다. 그러나 문제는 여전히 남아 있습니다. –

+0

@ 146percentRussian, 기존 응용 프로그램을 삭제 한 다음 동일한 코드를 다시 실행하십시오. – Kedarnath

+0

삭제 후 작동했습니다! –

관련 문제