2013-03-20 18 views
0

데이터베이스에서 데이터를 가져 오는 데 문제가 있습니다. LogCat에서 그러한 열 timeinstance로 불평했다. 이것은 내가 데이터베이스에 추가 한 새로운 컬럼입니다. 페칭에만 문제가 있지만 createNewList에는 해당 열에 문제가 없습니다. 무엇이 문제 일 수 있습니까? 내 전체 데이터베이스 클래스를 게시했습니다.Android의 Sqlite 데이터베이스에서 데이터를 가져올 수 없습니다.

public class TrackerDBAdapter { 

public static final String KEY_ROWID = "_id"; 
public static final String KEY_IDNUM = "_idnum"; 
public static final String KEY_SIMCARD = "_simcard"; 
public static final String KEY_DESCRIPTION = "_description"; 
public static final String KEY_MODEL = "_model"; 
public static final String KEY_TIMEINSTANCE = "timeinstance"; 
private static final String TAG = "TrackerDBAdapter"; 
private static final String DATABASE_NAME = "DBTrackerList"; 
private static final String SQLITE_TABLE = "TBTrackerList"; 
private static final int DATABASE_VERSION = 1; 
private final Context mCtx; 
private static final String DATABASE_CREATE = 
      "CREATE TABLE if not exists " + SQLITE_TABLE + " (" + 
      KEY_ROWID + " integer PRIMARY KEY autoincrement," + 
      KEY_IDNUM + "," + 
      KEY_SIMCARD + "," + 
      KEY_DESCRIPTION + "," + 
      KEY_MODEL + "," + 
      KEY_TIMEINSTANCE + "," + 
      " UNIQUE (" + KEY_IDNUM +"));"; 

private DatabaseHelper mDbHelper; 
private SQLiteDatabase mDb; 

private static class DatabaseHelper extends SQLiteOpenHelper { 

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


     @Override 
     public void onCreate(SQLiteDatabase db) { 
     Log.w(TAG, DATABASE_CREATE); 
     db.execSQL(DATABASE_CREATE); 
     } 

     @Override 
     public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
     Log.w(TAG, "Upgrading database from version " + oldVersion + " to " 
     + newVersion + ", which will destroy all old data"); 
     db.execSQL("DROP TABLE IF EXISTS " + SQLITE_TABLE); 
     onCreate(db); 
     } 
} 

public TrackerDBAdapter(Context ctx) { 
     this.mCtx = ctx; 
} 

public TrackerDBAdapter open() throws SQLException { 
     mDbHelper = new DatabaseHelper(mCtx); 
     mDb = mDbHelper.getWritableDatabase(); 
     return this; 
} 

public void close() { 
     if (mDbHelper != null) { 
     mDbHelper.close(); 
     } 
} 

public long createNewList(String idnum, String simnum, 
      String description, String model, String time) { 

      ContentValues initialValues = new ContentValues(); 
      initialValues.put(KEY_IDNUM, idnum); 
      initialValues.put(KEY_SIMCARD, simnum); 
      initialValues.put(KEY_DESCRIPTION, description); 
      initialValues.put(KEY_MODEL, model); 
      initialValues.put(KEY_TIMEINSTANCE, time); 
      return mDb.insert(SQLITE_TABLE, null, initialValues); 
} 

public boolean deleteAllTrackerInTheList() { 

     int doneDelete = 0; 
     doneDelete = mDb.delete(SQLITE_TABLE, null , null); 
     Log.w(TAG, Integer.toString(doneDelete)); 
     return doneDelete > 0; 
} 

@SuppressLint("NewApi") 
public Cursor fetchListBySimcardNum(String inputText) throws SQLException { 
     Log.w(TAG, inputText); 
     Cursor mCursor = null; 
     if (inputText == null || inputText.length() == 0) { 
     mCursor = mDb.query(SQLITE_TABLE, new String[] {KEY_ROWID, 
       KEY_IDNUM, KEY_SIMCARD, KEY_DESCRIPTION, KEY_MODEL, KEY_TIMEINSTANCE}, 
     null, null, null, null, null); 

     } 
     else { 
     mCursor = mDb.query(true, SQLITE_TABLE, new String[] {KEY_ROWID, 
       KEY_IDNUM, KEY_SIMCARD, KEY_DESCRIPTION, KEY_MODEL, KEY_TIMEINSTANCE}, 
       KEY_SIMCARD + " like '%" + inputText + "%'", null, 
     null, null, null, null); 
     } 
     if (mCursor != null) { 
     mCursor.moveToFirst(); 
     } 
     return mCursor; 

    } 

@SuppressLint("NewApi") 
public Cursor fetchListByIDNum(String inputText) throws SQLException { 
     Log.w(TAG, inputText); 
     Cursor mCursor = null; 
     if (inputText == null || inputText.length() == 0) { 
     mCursor = mDb.query(SQLITE_TABLE, new String[] {KEY_ROWID, 
       KEY_IDNUM, KEY_SIMCARD, KEY_DESCRIPTION, KEY_MODEL, KEY_TIMEINSTANCE}, 
     null, null, null, null, null); 

     } 
     else { 
     mCursor = mDb.query(true, SQLITE_TABLE, new String[] {KEY_ROWID, 
       KEY_IDNUM, KEY_SIMCARD, KEY_DESCRIPTION, KEY_MODEL, KEY_TIMEINSTANCE}, 
       KEY_IDNUM + " like '%" + inputText + "%'", null, 
     null, null, null, null); 
     } 
     if (mCursor != null) { 
     mCursor.moveToFirst(); 
     } 
     return mCursor; 

    } 

public Cursor fetchAllTrackerInTheList() { 

     Cursor mCursor = mDb.query(SQLITE_TABLE, new String[] {KEY_ROWID, 
       KEY_IDNUM, KEY_SIMCARD, KEY_DESCRIPTION, KEY_MODEL, KEY_TIMEINSTANCE}, 
     null, null, null, null, null); 

     if (mCursor != null) { 
     mCursor.moveToFirst(); 
     } 
     return mCursor; 
} 

public int getLastInsertedID() { 
     int id = 0; 
     Cursor mCursor = mDb.query(SQLITE_TABLE, new String[] {KEY_ROWID, 
       KEY_IDNUM, KEY_SIMCARD, KEY_DESCRIPTION, KEY_MODEL, KEY_TIMEINSTANCE}, 
     null, null, null, null, null); 

     if (mCursor.moveToLast()) { 
      id = mCursor.getInt(0); 
     } 
     return id; 
} 

public void insertSomeCountries() { 

     createNewList("AFG","Afghanistan","Asia","Southern", "Central Asia");   

} 

}

답변

0

데이터베이스가 업데이트되지 않습니다. 앱을 제거한 다음 다시 설치해보세요.

또는 데이터베이스의 버전을 변경할 수 있습니다 : 나는 에뮬레이터를 사용하고

 private static final int DATABASE_VERSION = 2; 
+0

. 어떻게해야합니까? – Bryanyan

+0

에뮬레이터를 사용하면 휴대 전화에서와 같이 youcan을 제거 할 수 있습니다. GO를 사용하여 에뮬레이터의 Apps 관리 및 제거하십시오. – Gyonder

관련 문제