gpt4 book ai didi

android - 应用程序执行一次后向数据库添加新表

转载 作者:IT王子 更新时间:2023-10-29 06:27:47 26 4
gpt4 key购买 nike

我正在 Android 中制作一个简单的数据库。我想在我的代码执行一次后添加新表。现在,每当我尝试更改 EventDataSqlHelper 类中的 onCreate() 方法时,我的应用程序都会崩溃。

这可能是因为与SQLiteOpenHelper关联的onCreate()仅在应用程序首次运行时执行,我们无法对其进行进一步修改。

我还尝试编写一个单独的函数来添加新表。它在第一次执行时运行良好。但由于在第二次执行时它将覆盖其先前的数据库,因此导致应用程序崩溃。

如果数据库已经创建,有没有办法向数据库添加新表?

package org.example.sqldemo;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.provider.BaseColumns;
import android.util.Log;

/** Helper to the database, manages versions and creation */
public class EventDataSQLHelper extends SQLiteOpenHelper {

private static final String DATABASE_NAME = "events.db";
private static final int DATABASE_VERSION = 1;

// Table name
public static final String TABLE = "events";

// Columns
public static final String TIME = "time";
public static final String TITLE = "title";

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

@Override
public void onCreate(SQLiteDatabase db) {
String sql = "create table " + TABLE + "( " + BaseColumns._ID
+ " integer primary key autoincrement, " + TIME + " integer, "
+ TITLE + " text not null);";
Log.d("EventsData", "onCreate: " + sql);
db.execSQL(sql);
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {


}


}

最佳答案

这就是 onUpgradeDATABASE_VERSION 的用途。

例子:

  • 您有一个表events,并在手机上执行。
  • 现在您决定,您想要一个新表 users

    1. 更改 DATABASE_VERSION = 2;(这是您的版本号)
    2. onCreate() 中,创建所有表(创建表事件 & 创建表用户)
    3. onUpgrade() 中,创建在版本 oldVersionnewVersion 之间更改的所有表(创建表 users )
  • 稍后如果要添加新表,请再次递增DATABASE_VERSION,并在onCreate 中创建所有表,并在onUpgrade 中进行更改>

关于android - 应用程序执行一次后向数据库添加新表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8410831/

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