gpt4 book ai didi

android - 在 SQLite 数据库中完成更改后没有创建数据库

转载 作者:太空狗 更新时间:2023-10-29 14:24:43 27 4
gpt4 key购买 nike

有人可以帮助 android 中的 SQLite 数据库 吗?

首先,我使用了来自 here 的教程.它在我的应用程序中运行良好,但是当我添加新列并将 database 版本更改为“2”时,应用程序停止并且在文件资源管理器中找不到 database。有人能说明问题是什么以及解决方案。

编辑:这是我的一些改变..这是我的 FirstClass.java

// Database creation SQL statement
private static final String DATABASE_CREATE = "create table "
+ TABLE_TODO
+ "("
+ COLUMN_ID + " integer primary key autoincrement, "
+ COLUMN_CATEGORY + " text not null, "
+ COLUMN_SUMMARY + " text not null,"
+ COLUMN_DESCRIPTION
+ " text not null"
+ COLUMN_DATE + "date not null " //i have added the date column
+ ");";
public static void onCreate(SQLiteDatabase database) {
database.execSQL(DATABASE_CREATE);

}

public static void onUpgrade(SQLiteDatabase database, int oldVersion,
int newVersion) {
Log.w(FirstClass.class.getName(), "Upgrading database from version "
+ oldVersion + " to " + newVersion
+ ", which will destroy all old data");
database.execSQL("DROP TABLE IF EXISTS " + TABLE_TODO);
// database.execSQL("INSERT INTO "+TABLE_TODO+" VALUES (null, datetime()) ");
onCreate(database);
}

这是我的 TodoDatabaseHelper.java

private static final String DATABASE_NAME = "todotable2.db";
private static final int DATABASE_VERSION = 2;

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

// Method is called during creation of the database
@Override
public void onCreate(SQLiteDatabase database) {
FirstClass.onCreate(database);
}

// Method is called during an upgrade of the database,
// e.g. if you increase the database version
@Override
public void onUpgrade(SQLiteDatabase database, int oldVersion,
int newVersion) {
FirstClass.onUpgrade(database, oldVersion, newVersion);
}

最佳答案

我不确定我是否正确,但是,如果您在您的 oUnUpgrade 方法中删除了您的数据库,系统应该升级哪个 dab?我的意思是,如果你为你的数据库设置了一个新版本,它应该和以前的数据库一样,但只是改变了而不是删除了。

我有一个类似的案例,我保存了一些用户输入值,但每次我的应用程序都会崩溃。所以我将版本设置为相同的整数(例如,对于旧数据库和新数据库,只有版本 1,而不是旧版本 1 和新版本 2),删除旧数据库并创建一个全新的,其中包含所有新数据。这非常有效....

编辑

以上声明是更新,不是升级,抱歉。但是现在,我已经查看了您的代码,是否有可能因为错误而没有创建数据库?我认为您忘记在 COLUMN_DESCRIPTION 之后设置一个点。这是我的编辑:

      private static final String DATABASE_CREATE = "create table " 
+ TABLE_TODO
+ "("
+ COLUMN_ID + " integer primary key autoincrement,"
+ COLUMN_CATEGORY + " text not null,"
+ COLUMN_SUMMARY + " text not null,"
+ COLUMN_DESCRIPTION
+ " text not null," //HERE YOU FORGOT COMMA
+ COLUMN_DATE + " date not null" //i have added the date column
+ ");";

关于android - 在 SQLite 数据库中完成更改后没有创建数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13599397/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com