Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/205.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
android中的第一个数据库创建_Android - Fatal编程技术网

android中的第一个数据库创建

android中的第一个数据库创建,android,Android,我有一个应用程序,目前还没有使用数据库。现在我将更新我的应用程序,这个应用程序包含一个数据库。我对此很好奇。在数据库onCreate或onUpgrade中,哪种方法将调用更新后的手机?当您第一次创建数据库时,将调用onCreate()方法。如果升级数据库版本,则会调用该时间onUpgrade()方法。第一次如果数据库不存在,onCreate()方法将运行 如果数据库存在,并且您当前的数据库版本高于安装的版本,则将运行onUpgrade(),您应该在onUpgrade方法中检查版本并执行所需操作

我有一个应用程序,目前还没有使用数据库。现在我将更新我的应用程序,这个应用程序包含一个数据库。我对此很好奇。在数据库
onCreate
onUpgrade
中,哪种方法将调用更新后的手机?

当您第一次创建数据库时,将调用
onCreate()
方法。如果升级数据库版本,则会调用该时间
onUpgrade()
方法。

第一次如果数据库不存在,onCreate()方法将运行

如果数据库存在,并且您当前的数据库版本高于安装的版本,则将运行onUpgrade(),您应该在onUpgrade方法中检查版本并执行所需操作

下面是dbHandler.java类的一个示例

    package com.app.util;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import java.util.ArrayList;
import java.util.List;

/**
 * Created by Milad
 */
public class DBHandler extends SQLiteOpenHelper {


    private static final String DB_NAME = "YourDbName";
    private static final int DB_VERSION = 1;


    public DBHandler(Context context) {
        super(context, DB_NAME, null, DB_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {

        //Create firstTable
        db.execSQL("CREATE TABLE TEST ( _id INTEGER PRIMARY KEY AUTOINCREMENT, Name TEXT);");

    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        if (oldVersion >2) {
            db.execSQL("DROP TABLE IF EXISTS TEST");
            onCreate(db);
        }
    }
}

如果我想在升级时保护表中的数据,我应该怎么做?@Okan您应该在onUpgrade中做新的更改,就像表更改一样,添加列和。。。如果您的数据库未更改,则不需要更新数据库版本,旧数据库和数据将保持不变。您可以给出添加列的示例吗?
@Override public void onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion){if(oldVersion<6){db.execSQL(“ALTER TABLE TestTable ADD ColumnName VARCHAR DEFAULT null”);}}