删除后无法创建数据库

时间:2011-03-10 12:53:24

标签: android database

我正在进行数据库编程,它运行正常。但在我调用db.deleteTitle(1)之后;我无法再次创建我的数据库。 c.moveToFirst()始终返回null。

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

然后另一个函数是在数据库中添加数据

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();
    }
}

我不知道为什么这次失败虽然它之前运作良好但却失败了。 请指导。 谢谢, 斯海斯塔

2 个答案:

答案 0 :(得分:1)

您可以使用 adb 工具手动删除数据库,也可以使用数据库版本号(假设您的代码类似于Notepad应用程序),这将在下一次再次运行数据库创建代码你打开它的时间。

- 编辑 - 数据库助手代码 -

    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 Notepad教程中看到的内容相同。如果表结构发生更改,则增加DATABASE_VERSION数(例如从1到2)。将调用 onUpgrade 并删除旧版本,然后再次运行 onCreate 以创建新的表格。

答案 1 :(得分:0)

如果要删除数据库,则需要先重新创建数据库,然后才能访问它。您必须重新运行数据库create语句,否则就您的应用程序所知,该数据库不再存在。