Android周学习Step By Step(6)--Android的数据库SQLite
在Android中可供选择的存储方式有SharedPreferences、文件存储、SQLite数据库、Content provider和网络。下面主要说一说SQLite
SQLite是轻量级的嵌入式数据库,麻雀虽小但五脏俱全。
l 新建数据库
通过SQLiteOpenHelper类可以生成一个数据库并对数据库的版本进行管理。当在程序中调用这个类的方法getWritableDataBase()或者getReadableDataBase()方法的时候,如果当时没有数据,那么Android系统就会自动生成一个数据库。代码如下:
1: private static class DatabaseHelper extends SQLiteOpenHelper {2: DatabaseHelper(Context context) {
3: super(context, DATABASE_NAME, null, DATABASE_VERSION);4: }
5: @Override6: public void onCreate(SQLiteDatabase db) {7: String sql = "CREATE TABLE " + TABLE_NAME + " (" + TITLE8: + " text not null, " + BODY + " text not null " + ");";9: Log.i("haiyang:createDB=", sql);10: db.execSQL(sql);
11: }
12: @Override13: public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {14: }
15: }
<style type="text/css"> <!-- .csharpcode, .csharpcode pre {font-size:small; color:black; font-family:consolas,"Courier New",courier,monospace; background-color:#ffffff} .csharpcode pre {margin:0em} .csharpcode .rem {color:#008000} .csharpcode .kwrd {color:#0000ff} .csharpcode .str {color:#006080} .csharpcode .op {color:#0000c0} .csharpcode .preproc {color:#cc6633} .csharpcode .asp {background-color:#ffff00} .csharpcode .html {color:#800000} .csharpcode .attr {color:#ff0000} .csharpcode .alt {background-color:#f4f4f4; width:100%; margin:0em} .csharpcode .lnum {color:#606060} --> </style>其中onCreate(SQLiteDatabase)在数据库第一次生成的时候会调用这个方法,一般在这个方法里生成数据表。
onUpgrade(SQLiteDatabase,int,int)方法是当数据库升级的时候会被Android系统主动调用。一般在这个方法里边删除数据表,并建立新的数据表,以及一些其他的操作这取决于软件的需求。
l 新建数据表
数据库有了下一步就是建表了,和建数据库一样也是通过执行SQL语句进行建表的操作代码如下
1: private void CreateTable() {2: SQLiteDatabase db = mOpenHelper.getWritableDatabase();
3: String sql = "CREATE TABLE " + TABLE_NAME + " (" + TITLE4: + " text not null, " + BODY + " text not null " + ");";5: Log.i("haiyang:createDB=", sql);6: try {7: db.execSQL("DROP TABLE IF EXISTS diary");8: db.execSQL(sql);
9: setTitle("数据表成功重建");10: } catch (SQLException e) {11: setTitle("数据表重建错误");12: }
13: }
<style type="text/css"> <!-- .csharpcode, .csharpcode pre {font-size:small; color:black; font-family:consolas,"Courier New",courier,monospace; background-color:#ffffff} .csharpcode pre {margin:0em} .csharpcode .rem {color:#008000} .csharpcode .kwrd {color:#0000ff} .csharpcode .str {color:#006080} .csharpcode .op {color:#0000c0} .csharpcode .preproc {color:#cc6633} .csharpcode .asp {background-color:#ffff00} .csharpcode .html {color:#800000} .csharpcode .attr {color:#ff0000} .csharpcode .alt {background-color:#f4f4f4; width:100%; margin:0em} .csharpcode .lnum {color:#606060} --> </style>对数据库的操作
对数据库的操作无非就是增、删、改、查了,Android和.NET是一样的,都是通过传SQL语句并执行来对数据进行相关的操作。以插入数据为例,具体代码如下(删除、修改操作同理,只需要改写SQL语句即可)
1: /*2: * 插入两条数据3: */4: private void insertItem() {5: SQLiteDatabase db = mOpenHelper.getWritableDatabase();
6: String sql1 = "insert into " + TABLE_NAME + " (" + TITLE + ", " + BODY7: + ") values('haiyang', 'android的发展真是迅速啊');";8: String sql2 = "insert into " + TABLE_NAME + " (" + TITLE + ", " + BODY9: + ") values('icesky', 'android的发展真是迅速啊');";10: try {11: Log.i("haiyang:sql1=", sql1);12: Log.i("haiyang:sql2=", sql2);13: db.execSQL(sql1);
14: db.execSQL(sql2);
15: setTitle("插入两条数据成功");16: } catch (SQLException e) {17: setTitle("插入两条数据失败");18: }
19: }
也可以通过insert方法直接进行数据插入,这里相当于.NET中的SQLHelper一样,Android已经为我们写了增、删、改、查的方法,只需要加进去相应的参数即可。
在Android中查询到的数据将放在Cursor当中,Cursor是Android当中的一个接口,通过Cursor我们可以对从数据库中获得的数据进行相应的操作,相当于.NET中的DataTable或者DataSet。简单的查询代码如下
<style type="text/css"> <!-- .csharpcode, .csharpcode pre {font-size:small; color:black; font-family:consolas,"Courier New",courier,monospace; background-color:#ffffff} .csharpcode pre {margin:0em} .csharpcode .rem {color:#008000} .csharpcode .kwrd {color:#0000ff} .csharpcode .str {color:#006080} .csharpcode .op {color:#0000c0} .csharpcode .preproc {color:#cc6633} .csharpcode .asp {background-color:#ffff00} .csharpcode .html {color:#800000} .csharpcode .attr {color:#ff0000} .csharpcode .alt {background-color:#f4f4f4; width:100%; margin:0em} .csharpcode .lnum {color:#606060} --> </style>1: private void showItems() {2: SQLiteDatabase db = mOpenHelper.getReadableDatabase();
3: String col[] = { TITLE, BODY };
4: Cursor cur = db.query(TABLE_NAME, col, null, null, null, null, null);5: Integer num = cur.getCount();
6: setTitle(Integer.toString(num) + " 条记录");7: }
<style type="text/css"> <!-- .csharpcode, .csharpcode pre {font-size:small; color:black; font-family:consolas,"Courier New",courier,monospace; background-color:#ffffff} .csharpcode pre {margin:0em} .csharpcode .rem {color:#008000} .csharpcode .kwrd {color:#0000ff} .csharpcode .str {color:#006080} .csharpcode .op {color:#0000c0} .csharpcode .preproc {color:#cc6633} .csharpcode .asp {background-color:#ffff00} .csharpcode .html {color:#800000} .csharpcode .attr {color:#ff0000} .csharpcode .alt {background-color:#f4f4f4; width:100%; margin:0em} .csharpcode .lnum {color:#606060} --> </style>
更多相关文章
- 浅谈Java中Collections.sort对List排序的两种方法
- mybatisplus的坑 insert标签insert into select无参数问题的解决
- python起点网月票榜字体反爬案例
- Python list sort方法的具体使用
- python list.sort()根据多个关键字排序的方法实现
- Android(安卓)异步加载解决方案(循环,多任务)
- Android(安卓)传输数据时Base64编码算法详解
- Android(安卓)SQLite数据库 《第一行代码》
- android的Instrumentation详解