相关疑难解决方法(0)

Android:升级数据库版本并添加新表

我已经为我的应用程序创建了sqlite表,但现在我想在数据库中添加一个新表.

我更改了DB版本如下

private static final int DATABASE_VERSION = 2;
Run Code Online (Sandbox Code Playgroud)

并添加字符串以创建表

private static final String DATABASE_CREATE_color = 
   "CREATE TABLE IF NOT EXISTS files(color text, incident_id text)";
Run Code Online (Sandbox Code Playgroud)

onCreate并且onUpgrade,如下:

@Override
    public void onCreate(SQLiteDatabase database) {
        database.execSQL(DATABASE_CREATE_incident);
        database.execSQL(DATABASE_CREATE_audio);
        database.execSQL(DATABASE_CREATE_video);
        database.execSQL(DATABASE_CREATE_image);

    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        //drop table and add new tables when version 2 released.
        db.execSQL(DATABASE_CREATE_color);

    }
Run Code Online (Sandbox Code Playgroud)

但由于某种原因,没有创建新表.我究竟做错了什么?

database sqlite android

114
推荐指数
2
解决办法
9万
查看次数

adb更新非市场apk?

有没有什么方法可以在Android设备上更新(不重新安装)非市场apk?我只能找到一个adb安装(没有像adb更新)

android adb

108
推荐指数
1
解决办法
6万
查看次数

SQLiteOpenHelper onUpgrade()混淆Android

我正在用数据库做我的第一个应用程序,我在理解onUpgrade函数时遇到了一些麻烦.我的数据库有一个包含项目和收藏列的表格,以便用户可以收藏项目.我看到的大多数实现只是删除表并重新构建它,但我不想这样做.我希望能够在表格中添加更多项目.

当应用程序通过Android市场升级时,数据库是否知道其版本号?那么我可以增加代码中的版本号,然后将其导出到市场,当用户第一次启动升级版本时,将调用onUpgrade吗?

如果是这种情况,我的onUpgrade只会从文件中提取并添加数据库项.这是一种标准的处理方式,还是有更好的方法在Android中处理它.我想尽可能保持标准.

谢谢

database sqlite android

48
推荐指数
3
解决办法
4万
查看次数

困惑:SQLiteOpenHelper onUpgrade()如何表现?和导入旧的数据库备份一起?

假设我在SQLiteOpenHelper中有一个包含2列的数据库表test_table和相应的创建脚本:

DB_VERSION = 1:
public void onCreate(SQLiteDatabase db)
{
db.execSql("CREATE table test_table (COL_A, COL_B);
}
Run Code Online (Sandbox Code Playgroud)

这是最初的应用版本1,发布在Play商店中.

过了一会儿,应用程序和使用的数据库都有更新.我想SQLiteOpenHelper类必须像这样调整:

DB_VERSION = 2:
public void onCreate(SQLiteDatabase db)
{
db.execSql("CREATE table test_table (COL_A, COL_B, COL_C)");
}

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
{
db.execSql("ALTER TABLE test_table ADD Column COL_C");
}
Run Code Online (Sandbox Code Playgroud)

一段时间后,另一个应用更新:

DB_VERSION = 3:
public void onCreate(SQLiteDatabase db)
{
db.execSql("CREATE table test_table (COL_A, COL_B, COL_C, COL_D)");
}

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
{
db.execSql("ALTER TABLE test_table ADD Column COL_D"); …
Run Code Online (Sandbox Code Playgroud)

import android export sqliteopenhelper

27
推荐指数
2
解决办法
1万
查看次数

Android中的onUpgrade()sqlite数据库

我创建了一个Android应用程序,在启动时检查是否有新版本的应用程序.如果是,则应用程序下载新的apk文件并过度安装新的apk.我的应用程序使用sqlite db.但是这个db,从一个版本到另一个版本都可以改变.我想我必须使用这个方法:

 onUpgrade()
Run Code Online (Sandbox Code Playgroud)

但我不确切知道如何使用它.

当我启动应用程序时,我将此代码用于克里特数据库(如果不存在):

DbHelper mDHelper = new DbHelper(context, DB_NAME, null, DB_VERSION)
Run Code Online (Sandbox Code Playgroud)

如果我想使用onUpgrade()方法,我应该改变什么?我什么时候打电话给它?

sqlite android

8
推荐指数
2
解决办法
2万
查看次数

onUpgrade数据库 - oldVersion - newVersion

我正在使用这个DataBaseHelper.class,我被困在onUpgrade()方法上.我不知道如何弄清楚数据库的版本号是什么.我可以将版本设置为1,我第一次发布它,当我发布更新时,我只需将版本设置为2 (myDataBase.setVersion(2);).但只要应用程序正在运行,它就只有2.下一次它将被启动它再次是1.同样的事情发生了private static int DATABASE_VERSION.我正在考虑将版本号存储在一个额外的表中,但在我看来,这似乎不是最佳实践.

那么如何确保版本号在升级后增加并且保留它(分配给private static int DATABASE_VERSION或的值myDataBase.getVersion();)?

DataBaseHelper类:

public class DataBaseHelper extends SQLiteOpenHelper {

    //The Android's default system path of your application database.
    private static String DB_PATH = "/data/data/com.mydatabase.db/databases/";

    private static String DB_NAME = "database.sl3";

    private SQLiteDatabase myDataBase;

    private final Context myContext;


    // Do you need this?
    private static int DATABASE_VERSION = 2;
    // or is this correct:
    // private static int DATABASE_VERSION = myDataBase.getVersion();


    /**
     * Constructor
     * Takes and …
Run Code Online (Sandbox Code Playgroud)

java sqlite android upgrade

7
推荐指数
1
解决办法
9009
查看次数

标签 统计

android ×6

sqlite ×4

database ×2

adb ×1

export ×1

import ×1

java ×1

sqliteopenhelper ×1

upgrade ×1