2014-12-20 30 views
0

我創建了數據庫並運行它。然後我添加了幾行。一切都按照它應該運行。然後我想跟蹤最後一個日期在表格中完成的時間。因此,我在同一個數據庫名稱中再添加一個表格,並嘗試保存當前日期,但是當我運行它時,表格無法找到。 我走到這一步:在MYSQLiteHelper類Android中的多個表格無效

//impotrs... 
public class MYSQLiteHelper extends SQLiteOpenHelper { 


// TABLE EMPLOYEES 
    public static final String TABLE_NAME = "employee"; 
     public static final String COLUMN_ID = "_id"; 
     public static final String COLUMN_NAME = "name"; 
     public static final String COLUMN_EMAIL = "email"; 
     public static final String COLUMN_TIME = "saved_date"; 

//TABLE DATE 
     public static final String COLUMN_TIME_ID = "date_id"; 
     public static final String TABLE_TIME_NAME = "date"; 

    //DATABASE COMMENTS.DB 
     private static final String DATABASE_NAME = "commments.db"; 
     private static final int DATABASE_VERSION = 1; 


     // Database creation sql statement for employee 
     private static final String DATABASE_CREATE = "create table " 
       + TABLE_NAME + "(" + COLUMN_ID + " integer primary key autoincrement, " + COLUMN_NAME + " text not null, " + COLUMN_EMAIL + " text)"; 

    // Database creation sql statement for date 
     private static final String DATABASE_CREATE_TIME = "create table " 
       + TABLE_TIME_NAME + "(" + COLUMN_TIME_ID + " integer primary key autoincrement, " + COLUMN_TIME + " text)"; 

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


     @Override 
     public void onCreate(SQLiteDatabase database) { 
      database.execSQL(DATABASE_CREATE_TIME); 
      database.execSQL(DATABASE_CREATE); 

     } 


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

名爲僱員表perfecly運行。我可以添加新員工或選擇任何查詢。但是,當我嘗試插入當前日期到表名稱日期它有運行時錯誤「android.database.qslte.SQLiteException:沒有這樣的表(代碼1);;編譯SETECT date_id時,seved_date從日期。 我有什麼。其他類主要是我做了什麼,我也做了employye相同:在主要活動按鈕 :

在EmployeeDataSource類
EmployeeDataSource dataSource = new EmployeeDataSource(this); 

    // other codes.... 

    public void getCurrentDate(View v){ 

      SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
      String formatDate = sdf.format(new Date()); 
      txtTop.setText(formatDate); 
      dataSource.addDate(formatDate); 

     } 

private String[] timeColumn = {MYSQLiteHelper.COLUMN_TIME_ID ,MYSQLiteHelper.COLUMN_TIME}; 


     public long addDate(String date){ 
      ContentValues values = new ContentValues(); 
      values.put(MYSQLiteHelper.COLUMN_TIME, date); 
      return database.insert(MYSQLiteHelper.TABLE_TIME_NAME, null, values); 
     } 

public String getStoredDate(){ 
      ArrayList<String> array = new ArrayList<String>(); 
      Cursor crs = database.query(MYSQLiteHelper.TABLE_TIME_NAME, timeColumn, null, null, null, null, null); 
     crs.moveToFirst(); 
     while (!crs.isAfterLast()){ 
      array.add(crs.getString(1)); 
      crs.moveToNext(); 
     } 
      String strData = array.get(array.size() - 1); 
      return strData; 
     } 

在我看來,我ommit或有什麼錯在MYSQLiteHelper中,當我讀到onCreate()方法僅在數據庫文件不存在但是我的da tabase文件已經存在。請問有人可以幫忙。謝謝。

+1

沒有這樣的表錯誤。檢查查詢是否正確。如果您在設備中運行應用程序後添加了此表,請嘗試卸載並重新安裝 –

回答

1

您需要增加DATABASE_VERSION常量,以便調用onUpgrade並創建表。

+0

謝謝您的使用。之前的數據丟失了,但現在兩個表都可以存儲和更新數據。 –

+0

如果您需要維護用戶數據,則需要將代碼添加到'onUpgrade'中,該代碼將比較您擁有的版本和要移動到的版本,並僅對所需的架構進行更改。而不是刪除這兩個表並調用onCreate。 –