2012-10-31 104 views
0

我有一个扩展SQLiteOpenHelper的类。重载的两个函数是SQLiteOpenHelper更新数据库中的表格

@Override 
    public void onCreate(SQLiteDatabase database) { 
     database.execSQL(DATABASE_CREATE); 

    } 

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

    } 

在OnCreate函数中,我添加了SQL脚本来创建表。现在,如果我想升级数据库中的表,该怎么办。

何时调用onUpgrade函数?

什么是oldVersion和newVersion的int值?

这些是否允许我在我的数据库上创建版本?

就像在版本2我想添加一个新表,并在版本3我想添加一个新的列到现有的数据库表?

我该怎么做?

每次创建类的对象时,都会调用onCreate函数,或者只有在安装应用程序时Android才调用它。

回答

0

我给你一个修剪,在这里我设置数据库版本为1.如果我需要升级所有数据库,我会使它2或其他东西和SQLiteOpenHelper会知道这是一个新版本的数据库,并且调用onUpgrade方法...

private final int DATABASE_VERSION = 1; 
private final String DATABASE_NAME = "yourDatabase"; 

private class DBOpenHelper extends SQLiteOpenHelper { 

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

    @Override 
    public void onCreate(SQLiteDatabase db) { 
     db.execSQL(CREATE_TABLE_SIGNIN_FIRST); 
    } 

    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
     // you can drop table and re create it here. 
    } 

} 
+0

老版本和新版本会如何发挥作用? – user1730789

1

什么oldVersionnewVersion INT值?

这些用于版本化您的数据库。数据库版本在SQLiteOpenHelper的构造函数中传递。

什么时候调用onUpgrade函数?

onUpgrade被称为当你newVersion>oldVersion

做这些让我创造我的分贝一个版本?

是这些值允许您为数据库版本。

就像在版本2我想添加一个新表,并在版本3我想 添加一个新的列到现有的数据库表?

onUpgrade方法中执行CREATE TABLE查询,该查询将在您的数据库中创建一个新表。同样,如果您想添加新列,请使用ALTER TABLE语句。

的的onCreate函数将每个时刻i创建的 一个对象的类,或将Android调用此应用程序安装 仅当被调用?如果你的应用程序没有创建一个数据库呢,

OnCreate被称为像的情况 - 你是启动您的应用是第一次,清除其数据后运行的第一次应用。

+0

因此,在构造函数中传递的版本是newVersion,并且在onUpdate版本被调用之后,这变成了oldVersion? @Ragunath Jawahar。 – user1730789

+0

准确地说,它变成了当前版本。在下一次更新中,如果你增加你的DB_VERSION,那么它就变成了旧版本。 –