您的位置:首页 > 移动开发 > Android开发

Android SQLite数据库

2016-04-16 01:20 435 查看
SQLite是一款轻量级的关系型数据库,它的运算运算速度非常快,很适合在移动设备上使用,并且操作简单,下面简单介绍一下SQLite的使用

一 . 创建数据库

Android中提供了一个SQLiteOpenHelper帮助类来管理数据库,它是一个抽象类,首先我们创建一个类来继承SQLiteOpenHelper,然后分别重写onCreat()和onUgrade()这两个方法,它们分别是用来创建和更新数据库的。然后分别调用实例化对象的getReadableDataBase()或getWritableDataBase()来创建或打开一个数据库,其中构造方法的四个参数分别为context,name,
cursor, version, 意思分别是 操作上下文 数据库的名字,查询时返回的cursor对象, 数据库的版本号。 这样我们通过调用getReadableDataBase()或getWritableDataBase()来创建一个数据库了。数据将会存放在/data/data/<package name>/databases/目录下,同时会执行重写的onCreate方法也会得到执行,所以在这里写一些创建表的操作。

public class MyDataBaseHelper extends SQLiteOpenHelper {

public MyDataBase(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
}

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

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

}
}


首先我们先创建一个名为BookStore.db的数据库然后在这个数据库中新建一张Book表

MyDataBaseHelper dataBaseHelper = new MyDataBaseHelper(this, "BookStore.db", null, 1);

public  static final String CREATE_BOOK = "create table book ("
+ "id integer primary key autoincrement, "             //primary key 将id列设为主键, autoincremen 表示id列是自增长的
+ "author text, " + "price real, "
+ "pages integer, " + "name text)" ;


然后在Activity 的onCreate方法中执行dataBaseHelper.getWriteableDataBase(); 当执行这句话时,先会检测当前程序中有没有BookStore.db这个数据库,如果没有就会创建一个数据库,如果已经存在了,就不会再次创建了, 在创建完之后我们可以在命令行中使用adb工具来对数据库的创建情况进行检查,(首先要把adb 的路径配置到环境变量里,在系统变量中找到Path,将android-sdk路径下的platform-tools目录配置到Path下)打开命令行输入adb
shell就会进入到设备控制台,然后使用cd 命令进入到/data/data/<package name>/databases/目录下, 并使用ls命令查看该目录里的文件。 接下来可以借助sqlite命令来打开数据库,只要键入sqlite3 后面再加上数据库名即可,例如 sqlite BookStore.db, 打开数据库后就可以对表进行管理了, 比如通过.schema命令来查看表中的建表语句, .exit或.quit来退出数据库的编辑。

二. 升级数据库

刚才我们在MyDataBaseHelper这个类中的onCreate方法中使用execSQL方法创建了数据库, 还有一个方法onUpgrade()方法是用于对数据库进行升级的, 比如我们想在创建的数据库中再添加一张表,先要在onCreate()中增加一条创建表的语句 然后在在onUpgrade方法中执行onCreate(db)方法。需要注意的是在执行onCreate()方法前要判断添加的表是否存在,如果存在就要删除,所以在onCreate()中写的添表语句都要在onUpgrade中判断,比如db.execSQL("deop
tadle if exist xxx"), 否则就会报错。最后还要把实例化MyDataBaseHelper类的构造参数中最后一个参数,也就是数据库的版本号修改成一个比原来大的数字就可以了。这样就可以实现升级数据库的功能了。

三. 添加数据

给数据库中添加数据时,先要获取SQLiteDataBase对象, 然后使用ContentValues类的实例来对要添加的数据进行组装,比如contentValues.put("key", "value") 其实之前在给数据库建表的时候,有一项数据id 给设置为自增长了, 它的数据会在入库的时候自动增长,所以在添加数据时就不需要在给id那一列赋值了。接下来调用insert方法将数据添加到表中就可以了,insert方法有两个参数,分别是表名和ContentValues对象。

四. 删除数据

同样先要获取SQLiteDataBase 对象,然后直接调用它的dalete方法就可以了, delete方法共有三个参数, 第一个是表名,后两个是约束删除某一行或几行的数据,不写就是删除所有行。比如db.delete("BOOK", "pages > ?", "new String {"300"}"); 这就会删除表中页数超过300的书。

五. 更新数据

同样先要获取SQLiteDataBase 对象, 然后使用ContentValues类的实例来对要添加的数据进行组装,比如contentValues.put("key", "value"), 调用update方法,这个方法有四个参数, 前两个分别是 表名, ContentValues对象, 后两个是用来约束更新哪几行, 比如db.update("Book", "values", "name = ?", "bbb"); 这样就会把指定名字的书的values里的键改成对应的值。

六. 查找数据

查找数据是数据库操作中最复杂的一种。SQLiteDataBase提供了query()方法来对数据进行查询, 这个方法非常复杂,最简单的一种也需要七个参数, 第一个 表名, 第二个 查询哪几列,第三四个 哪一行或哪几行, 第五个指定需要去group by 的列 第六个,对group by 后的数据进行进一步过滤 , 第七个 查询结果的排序方式。调用query方法后会反悔一个cursor对象, 我们可以通过它来取出所有数据。比如 Cursor cursor= db.query("Book",
null, null, null, null, null, null); 循环来遍历每一行数据,通过cursor的getColumnIndex()方法获取某一列在表中的位置, 然后将这个值传到相应的取值方法中就可以得到数据库中对应的值了。

Android SQLite 数据库的基本操作就是这些,当然还有很多内容没有涉及到,需要自己去慢慢探索。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: