SQLite在Android系统中的使用方法(2)

发表于:2013-01-04来源:ImportNew作者:赵荣点击数: 标签:Android
构造函数做两件事情,首先,检查数据库是否存在,如果不存在,则调用onCreate方法创建数据库。然后,如果数据库已经存在了,那么就检查数据库版本是

  构造函数做两件事情,首先,检查数据库是否存在,如果不存在,则调用onCreate方法创建数据库。然后,如果数据库已经存在了,那么就检查数据库版本是否和构造函数中传入的数据库版本值一致,从而决定数据库是不是已经更新(updated)过了,如果需要更新,则调用onUpgrade方法。

  另外,如上所述,我们已经知道onCreate方法只有当数据库不存在的时候才会被调用,因此如果你想在程序安装以后第一次运行时做什么操作的话,这个方法倒不失为一个很方便的手段,你可以在这个方法中调用任何其他方法,比如说许可协议说明对话框。

  让我们回头看看数据库本身,因为本文只是一个说明性质的文章,因此这里我只是创建一个简单的雇员信息数据库,创建数据库的SQL脚本如下所示:

1
2
3
4
5
6
7
CREATE TABLE employees (
 _id INTEGER PRIMARY KEY AUTOINCREMENT,
 name TEXT NOT NULL,
 ext TEXT NOT NULL,
 mob TEXT NOT NULL,
 age INTEGER NOT NULL DEFAULT '0'
);

  我们可以很容易的用hard coding的方式将创建脚本写死在代码中,一行对应一行,代码如下:

1
2
3
4
5
6
7
@Override
public void onCreate(SQLiteDatabase database) {
    database.execSQL(
      
 "CREATE TABLE employees ( _id INTEGER PRIMARY KEY "
    + "AUTOINCREMENT, name TEXT NOT NULL, ext TEXT NOT NULL, "
    + "mob TEXT NOT NULL, age INTEGER NOT NULL DEFAULT '0')");
}

  但正如你所想的那样,当数据库大小达到了某个值,或者复杂性达到了某个程度时,这种做法就会非常不灵活,因此理想的做法是将SQL脚本放到一个asset文件中。如果这样做的话,你需要写一个方法从assets目录中读取SQL脚本,然后执行它:

原文转自:http://www.ltesting.net