2013-10-09 51 views
1

當我使用的Android錯誤:SQLite數據庫的OnCreate

SQLite數據庫下面的代碼:

public class DBHelper extends SQLiteOpenHelper{ 

    public String test=""; 

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

    @Override 
    public void onCreate(SQLiteDatabase db) { 
     test="here11"; 
     // Category table create query 
     String CREATE_CATEGORIES_TABLE = "CREATE TABLE " + TABLE_LABELS + " ("+ KEY_Phone + " TEXT PRIMARY KEY, " + KEY_NAME + " TEXT, " + KEY_email + " TEXT, " + KEY_Pass + " TEXT, " + KEY_MomNum + " TEXT)"; 
     db.execSQL(CREATE_CATEGORIES_TABLE); 
    } 
    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
     // Drop older table if existed 
     db.execSQL("DROP TABLE IF EXISTS " + TABLE_LABELS); 
     // Create tables again 
     onCreate(db); 
    } 
} 

我把一測試字符串是否進入到的onCreate功能

並在主類:

DBHelper db = new DBHelper(getApplicationContext()); 
Toast.makeText(getApplicationContext(), db.test, Toast.LENGTH_LONG).show(); 

但我顯示空的土司爲什麼?

謝謝。

+0

您是否清除應用程序的緩存/數據?否則它不會再次創建數據庫,這可能是爲什麼 – Stupidus

+0

將getApplicationContext更改爲此 –

回答

0

數據庫只創建一次,所以如果第二次運行,它將不會再次運行onCreate方法,因爲數據庫已經存在。 你需要做的是增加你的數據庫版本。這將調用onUpgrade,然後再次調用onCreate,它將再次創建數據庫。

+0

非常感謝您 –

+0

您應該在某處定義常量'DATABASE_VERSION',這只是需要增加。 這是常量使用'super(context,DATABASE_NAME,null,DATABASE_VERSION);'這可能只是用一個數字替換常量,但只是不好的做法 –

+0

檢查你的代碼,它只在那裏:'super(context ,DATABASE_NAME,null,DATABASE_VERSION);' –

0

您應該刪除應用程序緩存並再次測試。