我正在进行数据库编程,它运行正常。但在我调用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();
}
}
我不知道为什么这次失败虽然它之前运作良好但却失败了。 请指导。 谢谢, 斯海斯塔
答案 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语句,否则就您的应用程序所知,该数据库不再存在。