2011-03-10 71 views
0

我正在做一個數據庫編程,它工作正常。但是在我調用db.deleteTitle(1)之後;我無法再次創建我的數據庫。 c.moveToFirst()總是返回null。無法創建數據庫一次它被刪除

delButton.setOnClickListener(new OnClickListener(){ 
    @Override 
    public void onClick(View v) { 
    db.deleteTitle(1);}}); 

然後另一個功能是向其中添加數據的ini數據庫

private void saveDataInDB() 
{ 
    try 
    { 
     db.open();  
      db.insertInDb 
      (
       name.getText().toString(), mobileNumber.getText().toString()      
      );    

      Cursor c = db.getTitle(1); 
      if (c.moveToFirst())   
       DisplayToast(c); 
      else 
      { 
       Toast.makeText(this, "No title found", **I should not get this :(** 
         Toast.LENGTH_LONG).show(); 
      } 

      db.close(); 
    } 
    catch (Exception e) 
    { 
     Log.e("Save Error", e.toString()); 
     e.printStackTrace(); 
    } 
} 

我不知道爲什麼,這一次失敗,雖然它之前運作良好。 請指導。 謝謝, Shaista

回答

1

您可以通過使用ADB工具手動刪除數據庫,或者你能碰到你的數據庫版本號(假設你的代碼是一樣的記事本應用程序),它的下一次打開它的時候會再次運行數據庫創建代碼。

- 編輯 - 數據庫助手代碼 -

private static class DatabaseHelper extends SQLiteOpenHelper { 
    DatabaseHelper(Context context) { 
     super(context, DATABASE_NAME, null, DATABASE_VERSION); 
    } 

    @Override 
    public void onCreate(SQLiteDatabase db) { 
     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 random_table"); 
     onCreate(db); 
    } 
} 

這是數據庫輔助類我使用。和你在Android記事本教程中看到的一樣。如果表格結構發生變化,則增加DATABASE_VERSION數字(如從1到2)。 onUpgrade將被調用並將刪除舊版本,然後再次運行onCreate以創建新的表格/表格。

+0

你是什麼意思,通過數據庫版本號? – 2011-03-16 11:24:36

+0

用數據庫幫助程序代碼編輯答案。您只需增加數據庫版本即可運行onUpgrade代碼。 – Abhinav 2011-03-16 11:46:17

0

如果您刪除數據庫,您需要重新創建它,然後才能訪問它。您必須重新運行數據庫創建語句,否則就您的應用程序所知,該數據庫不再存在。