设为首页 收藏本站
查看: 1079|回复: 0

[经验分享] Android周学习Step By Step(6)--Android的数据库SQLite

[复制链接]

尚未签到

发表于 2016-12-1 11:28:05 | 显示全部楼层 |阅读模式


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:          @Override
   6:          public void onCreate(SQLiteDatabase db) {
   7:              String sql = "CREATE TABLE " + TABLE_NAME + " (" + TITLE
   8:                      + " text not null, " + BODY + " text not null " + ");";
   9:              Log.i("haiyang:createDB=", sql);
  10:              db.execSQL(sql);
  11:          }
  12:          @Override
  13:          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>

其中onCreateSQLiteDatabase)在数据库第一次生成的时候会调用这个方法,一般在这个方法里生成数据表。

onUpgradeSQLiteDatabaseintint)方法是当数据库升级的时候会被Android系统主动调用。一般在这个方法里边删除数据表,并建立新的数据表,以及一些其他的操作这取决于软件的需求。

l
新建数据表

数据库有了下一步就是建表了,和建数据库一样也是通过执行SQL语句进行建表的操作代码如下


   1:  private void CreateTable() {
   2:          SQLiteDatabase db = mOpenHelper.getWritableDatabase();
   3:          String sql = "CREATE TABLE " + TABLE_NAME + " (" + TITLE
   4:                  + " 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 + ", " + BODY
   7:                  + ") values('haiyang', 'android的发展真是迅速啊');";
   8:          String sql2 = "insert into " + TABLE_NAME + " (" + TITLE + ", " + BODY
   9:                  + ") 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当中,CursorAndroid当中的一个接口,通过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>

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-308188-1-1.html 上篇帖子: apk升级Sqlite数据库的升级及之前数据的保留 下篇帖子: Android开发—数据库应用—访问数据表(SQLite OpenHelper) —查询单条记录、修改
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表