background image

15

    }      

16

     

17 @Override     
18 public void onOpen(SQLiteDatabase db) {      
19

        super.onOpen(db);        

20

        // TODO 

      

每次成功打开数据库后首先被执行

21

    }      

22 }  

 

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

 

方法,你可以得到 SQLiteDatabase 实例,具体调用那个方法,取决

于你是否需要改变数据库的内容:

23 db=(new DatabaseHelper(getContext())).getWritableDatabase();  
24 return (db == null) ? false : true;  

 

上面这段代码会返回一个 SQLiteDatabase 类的实例,使用这个对象,你就可以查询或者
修改数据库。

 

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

 

已经关闭),需要调用 SQLiteDatabase 

 

的 Close() 方法来释放掉数据库连接。
创建表和索引

 

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

的 execSQL() 

 

方法来执行 DDL 语句。如果

没有异常,这个方法没有返回值。
例如,你可以执行如下代码:

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

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

 

这条语句会创建一个名为 mytable 

 

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

会自动增长的整数(例如,当你插入一行时,SQLite 会给这列自动赋值),另外还有两
列:title( 

 

字符 )   

和 value( 

 

浮点数 )  

。 SQLite 会自动为主键列创建索引。

 

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

 

需要删除表和索引 . 

 

删除表和索引,需要使用 execSQL() 

 

方法调用 DROP INDEX 和 

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

 

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

 

方法执行 INSERT, UPDATE, DELETE 等语句

来更新表的数据。execSQL() 

 

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

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

 

另一种方法是使用 SQLiteDatabase 

 

对象的 insert(), update(), delete() 

 

方法。这些方法把 SQL 

语句的一部分作为参数。示例如下:

29 ContentValues cv=new ContentValues();  
30 cv.put(Constants.TITLE, "example title");  
31 cv.put(Constants.VALUE, SensorManager.GRAVITY_DEATH_STAR_I);  
32 db.insert("mytable", getNullColumnHack(), cv);  

update

 

()方法有四个参数,分别是表名,表示列名和值的 ContentValues 对象,可选的 

                     找软件资料,就到一览软件文库

http://wk.yl1001.com/rj/