Android SQLite教程:内部架构及SQLite使用办法(4)
发布时间:2021-06-07
发布时间:2021-06-07
为了创建表和索引,需要调用 SQLiteDatabase 的 execSQL() 方法来执行 DDL 语句。如果没有异常,这个方法没有返 回值。例如,你可以执行如下代码: 1. 2. 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 语句。例如: 1. 2. db.execSQL("INSERT INTO widgets (name, inventory)"+ VALUES ('Sprocket', 5)");另一种方法是使用 SQLiteDatabase 对象的 insert(), update(), delete() 方法。这些方法把 SQL 语句的一部分作 为参数。示例如下: 1. 2. 3. 4. ContentValues cv=new ContentValues(); cv.put(Constants.TITLE, "example title"); cv.put(Constants.VALUE, SensorManager.GRAVITY_DEATH_STAR_I); db.insert("mytable", getNullColumnHack(), cv);update ) ( 方法有四个参数, 分别是表名, 表示列名和值的 ContentValues 对象, 可选的 WHERE 条件和可选的填充 WHERE 语句的字符串, 这些字符串会替换 WHERE 条件中的 “?” 标记。 update() 根据条件, 更新指定列的值, 所以用 execSQL() 方法可以达到同样的目的。WHERE 条件和其参数和用过的其他 SQL APIs 类似。例如: 1. 2. String[] parms=new String[] {"this is a string"}; db.update("widgets", replacements, "name=?", parms);