background image

10

        super.onOpen(db);                 // TODO 每次成功打开数据库后首先被执行       

11

    }       }   

接下来讨论具体如何创建表、插入数据、删除表等等。调用

 getReadableDatabase() 或

 

getWriteableDatabase() 方法,你可以得到 SQLiteDatabase 实例,具体调用那个方法,取决
于你是否需要改变数据库的内容:

12

db=(new  DatabaseHelper(getContext())).getWritableDatabase();     return  (db  ==  null)  ? 

false : true;   

上面这段代码会返回一个

 SQLiteDatabase 类的实例,使用这个对象,你就可以查询或

者修改数据库。

当 你 完 成 了 对 数 据 库 的 操 作 ( 例 如 你 的

  Activity  已 经 关 闭 ) , 需 要 调 用

 

SQLiteDatabase 的 Close() 方法来释放掉数据库连接。

创建表和索引

为了创建表和索引,需要调用

 SQLiteDatabase 的 execSQL() 方法来执行 DDL 语句。如

果没有异常,这个方法没有返回值。

例如,你可以执行如下代码:

13

db.execSQL("CREATE  TABLE  mytable  (_id  INTEGER  PRIMARY  KEY 

AUTOINCREMENT, title TEXT, value REAL);");   

这条语句会创建一个名为

 mytable 的表,表有一个列名为 _id,并且是主键,这列的值

是会自动增长的整数(例如,当你插入一行时,

SQLite 会给这列自动赋值),另外还有两

列:

title( 字符 ) 和 value( 浮点数 )。 SQLite 会自动为主键列创建索引。

通常情况下,第一次创建数据库时创建了表和索引。如果你不需要改变表的

 schema,

不需要删除表和索引

 .  删除表和索引,需要使用  execSQL()  方法调用 DROP INDEX  和

 

DROP TABLE 语句。

给表添加数据

上面的代码,已经创建了数据库和表,现在需要给表添加数据。有两种方法可以给表添

加数据。

像上面创建表一样,你可以使用

 execSQL() 方法执行 INSERT, UPDATE, DELETE 等语

句来更新表的数据。

execSQL() 方法适用于所有不返回结果的 SQL 语句。例如:

14

db.execSQL("INSERT INTO widgets (name, inventory)"+  VALUES ('Sprocket', 5)");  

另一种方法是使用

 SQLiteDatabase 对象的 insert(), update(), delete() 方法。这些方法把