Android作为一个应用在移动设备上的操作系统,自然也就少不了数据的存储。然而SQLite作为一个轻型的关系型数据库,基于其轻量、跨平台、多语言接口及安全性等诸多因数考虑,因而Android较大的数据存储采用了SQLite。SQLite与大多数关系型数据库一样都遵循ACID,语法也非常相似。只要您懂得mysql、sqlserver等关系型数据库的操作,只要查看下SQLite的官方文档便可快速上手。SQLite语法您可通过http://sqlite.org/lang.html进行查看。

  接下来看看Android是怎样操作SQLite的吧。Android下只要扩展SQLiteOpenHelper接口,并实现其Create和update方法便可以便捷地对SQLite进行管理。下面看下数据库管理类。

package com.example.ibm.myappsqllite;import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;/*** Created by ibm on 2015/9/11.*/
public class Db extends SQLiteOpenHelper {public Db(Context context, int version) {super(context, "db", null, version);//可以根据最后一个参数的version来完成表的自动创建和升级
    }@Overridepublic void onCreate(SQLiteDatabase db) {String sql = "CREATE TABLE user(" +"id integer primary key autoincrement, " +"name TEXT DEFAULT \"\"," + "sex TEXT DEFAULT \"\")";System.out.println("创建数据库:" + sql);db.execSQL(sql);}@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {//更新数据库String sql = "ALTER TABLE user ADD COLUMN mark TEXT DEFAULT \"\"";System.out.println("更新数据库:" + sql);db.execSQL(sql);}
}

  在MainActivity.java中的onCreate方法添加如下代码。

Db db = new Db(this, 1);//清空数据SQLiteDatabase sqLiteDb = db.getWritableDatabase();System.out.println("------------清空表数据------------");sqLiteDb.delete("user", null, null);System.out.println("------------充值表自增ID------------");sqLiteDb.execSQL("update sqlite_sequence SET seq = 0 where name ='user';");//重置id
        sqLiteDb.close();//        写入数据System.out.println("------------写入数据------------");sqLiteDb = db.getWritableDatabase();ContentValues cv = new ContentValues();cv.put("name", "王五");cv.put("sex", "男");sqLiteDb.insert("user", null, cv);cv = new ContentValues();cv.put("name", "李利");cv.put("sex", "女");sqLiteDb.insert("user", null, cv);sqLiteDb.close();//        查询数据db = new Db(this, 2);System.out.println("------------查询数据1------------");SQLiteDatabase sqLiteDbup = db.getReadableDatabase();Cursor c = sqLiteDbup.query("user", new String[]{"id", "name", "sex"}, null, null, null, null, null);while (c.moveToNext()) {Integer id = c.getInt(c.getColumnIndex("id"));String name = c.getString(c.getColumnIndex("name"));String sex = c.getString(c.getColumnIndex("sex"));System.out.println(String.format("id: %d, name: %s, sex: %s", id, name, sex));}sqLiteDbup.close();//更新数据System.out.println("------------更新数据------------");SQLiteDatabase sqldb = db.getWritableDatabase();ContentValues contentValues = new ContentValues();contentValues.put("sex", "gay");contentValues.put("mark", "wang wu is gay");String[] whereValues = {"王五"};sqldb.update("user", contentValues, "name = ?", whereValues);sqldb.close();//        查询数据System.out.println("------------查询数据2------------");sqLiteDbup = db.getReadableDatabase();c = sqLiteDbup.query("user", new String[]{"id", "name", "sex", "mark"}, null, null, null, null, null);while (c.moveToNext()) {Integer id = c.getInt(c.getColumnIndex("id"));String name = c.getString(c.getColumnIndex("name"));String sex = c.getString(c.getColumnIndex("sex"));String mark = c.getString(c.getColumnIndex("mark"));System.out.println(String.format("id: %d, name: %s, sex: %s, mark: %s", id, name, sex, mark));}sqLiteDbup.close();//删除数据System.out.println("------------删除数据------------");sqldb = db.getWritableDatabase();String[] delWhere = {"李利"};sqldb.delete("user", "name = ?", delWhere);sqldb.close();//        查询数据System.out.println("------------查询数据3------------");sqLiteDbup = db.getReadableDatabase();c = sqLiteDbup.query("user", new String[]{"id", "name", "sex", "mark"}, null, null, null, null, null);while (c.moveToNext()) {Integer id = c.getInt(c.getColumnIndex("id"));String name = c.getString(c.getColumnIndex("name"));String sex = c.getString(c.getColumnIndex("sex"));String mark = c.getString(c.getColumnIndex("mark"));System.out.println(String.format("id: %d, name: %s, sex: %s, mark: %s", id, name, sex, mark));}sqLiteDbup.close();db.close();

  将应用运行到虚拟机后,你可以看到如下结果

09-11 18:58:29.460    6647-6647/com.example.ibm.myappsqllite I/System.out﹕ 创建数据库:CREATE TABLE user(id integer primary key autoincrement, name TEXT DEFAULT "",sex TEXT DEFAULT "")
09-11 18:58:29.500    6647-6647/com.example.ibm.myappsqllite I/System.out﹕ ------------清空表数据------------
09-11 18:58:29.532    6647-6647/com.example.ibm.myappsqllite I/System.out﹕ ------------充值表自增ID------------
09-11 18:58:29.532    6647-6647/com.example.ibm.myappsqllite I/System.out﹕ ------------写入数据------------
09-11 18:58:29.616    6647-6647/com.example.ibm.myappsqllite I/System.out﹕ ------------查询数据1------------
09-11 18:58:29.628    6647-6647/com.example.ibm.myappsqllite I/System.out﹕ 更新数据库:ALTER TABLE user ADD COLUMN mark TEXT DEFAULT ""
09-11 18:58:29.640    6647-6647/com.example.ibm.myappsqllite I/System.out﹕ id: 1, name: 王五, sex: 男
09-11 18:58:29.644    6647-6647/com.example.ibm.myappsqllite I/System.out﹕ id: 2, name: 李利, sex: 女
09-11 18:58:29.644    6647-6647/com.example.ibm.myappsqllite I/System.out﹕ ------------更新数据------------
09-11 18:58:29.668    6647-6647/com.example.ibm.myappsqllite I/System.out﹕ ------------查询数据2------------
09-11 18:58:29.684    6647-6647/com.example.ibm.myappsqllite I/System.out﹕ id: 1, name: 王五, sex: gay, mark: wang wu is gay
09-11 18:58:29.684    6647-6647/com.example.ibm.myappsqllite I/System.out﹕ id: 2, name: 李利, sex: 女, mark:
09-11 18:58:29.688    6647-6647/com.example.ibm.myappsqllite I/System.out﹕ ------------删除数据------------
09-11 18:58:29.708    6647-6647/com.example.ibm.myappsqllite I/System.out﹕ ------------查询数据3------------
09-11 18:58:29.716    6647-6647/com.example.ibm.myappsqllite I/System.out﹕ id: 1, name: 王五, sex: gay, mark: wang wu is gay

  此时可以查看下模拟器中的/data/data/项目包/databases/目录下,已经存在了一个db数据库(名字为前面定义的数据库名)。

本文转自秋楓博客园博客,原文链接:http://www.cnblogs.com/rwxwsblog/p/4801973.html,如需转载请自行联系原作者

Android数据存储之SQLite的操作相关推荐

  1. 数据存储之 SQLite 数据库操作(三)

    上一讲中我们讲到了SQLite数据库的操作方法 [数据存储之SQLite数据库操作(二)],我们主要是以SQL语句对数据库进行增删改查,这一讲我们来学习一下 Android 建议的对数据库的操作方法 ...

  2. 数据存储之 SQLite 数据库操作(二)

    上一讲我们讲解了SQLite数据库的创建[数据存储之 SQLite 数据库操作(一)],还有更新的操作,这一讲我们来讲解一下数据库的增删改查,这边的程序是对上一个程序进行修改,建议结合上一讲内容进行学 ...

  3. 数据存储之 SQLite 数据库操作(一)

    这一讲我们来讲解一下数据库的存储方式 ,SQLite数据库属于文本型的数据库,它是以文本的形式来保存的. 1. SQLite 数据库介绍 查看 Android API文档中 SQLite 的介绍    ...

  4. Android数据存储之SQLite

    概览 l  概述 l   CRUD方法详解 l  注意事项   概述 对于大量数据的处理,如果不想将数据存于服务器端,Android API提供了对关系数据库SQLite的支持,在android-SD ...

  5. Android 数据存储之SQLite数据库

    转载请标明出处: http://blog.csdn.net/airsaid/article/details/52419418 本文出自:周游的博客 前言 SQLiteDatabase 创建数据库和表 ...

  6. 安卓 sqlite数据存入mysql_详解Android数据存储—使用SQLite数据库

    SQLite是Android自带的关系型数据库,是一个基于文件的轻量级数据库.Android提供了3种操作数据的方式,SharedPreference(共享首选项).文件存储以及SQLite数据库. ...

  7. Android数据存储之SQLite数据库存储

    Android中每一个数据库对创建它的应用程序包套件来说都是私有的,默认情况下其他应用程序无法直接访问此私有数据库.所有的数据库文件存放在手机中的/data/data/package_name/dat ...

  8. Android数据存储之GreenDao 3.0 详解

    前言: 今天一大早收到GreenDao 3.0 正式发布的消息,自从2014年接触GreenDao至今,项目中一直使用GreenDao框架处理数据库操作,本人使用数据库路线 Sqlite----> ...

  9. 2010-02-28 传智播客—Android(三)数据存储之三SQLite嵌入式数据库

    2010-02-28 传智播客-Android(三)数据存储之三SQLite嵌入式数据库 前两篇日志我已经总结了本地数据存储的前两种:文件和配置项.还剩下最后一种数据库存储--SQLite. 一.SQ ...

最新文章

  1. zTree 显示为‘aa’,当选择aa时,传的参数为‘22’
  2. linux usb init,复制Linux liveUSB导致init.d脚本出错 - 不可能..?
  3. MacBook开机自动连接iPad好评
  4. 自动化测试===unittest配套的HTMLTestRunner.py生成html报告源码
  5. mysql可以存储整数数值的是_MySQL的数值类型
  6. 电脑格式化后需要重装系统吗_电脑经常重装系统对电脑有影响吗
  7. linux网卡聚合软件下载,linux网卡聚合
  8. 2021科技创新者大会:“武汉永远是一座造光之城”
  9. html5 content type,Content-Type一览
  10. 用 Rust 开发 Linux,可行吗?
  11. 从摩托罗拉、诺基亚再到航空领域应用,这款开源数据库的成功如何成就天才程序员?...
  12. java到底是值传递还是引用传递?
  13. apt apt 用法_apt命令–实用用法指南
  14. 服务提供者框架讲解 之 myJDBC
  15. 计算机组成原理 笔记 第二版 唐朔飞
  16. android webview 魅族,魅族 Flyme 系统出现大面积应用闪退问题,提供临时解决方法...
  17. 关于screenX、clientX、pageX, offsetX的相关介绍
  18. Win7闪屏黑屏蓝屏解决办法
  19. 【Mybatis】一二级缓存的源码研究
  20. Lazadashopee热销产品有哪些?运动户外类目快速增长

热门文章

  1. RequestResponseServletContext
  2. java开发,年薪15W的你和年薪50W的他的差距
  3. 正态随机分布 C++实现
  4. UEFI+GPT安装windows
  5. 解决:MIUI 8应用商店下载不了软件 APP
  6. Spring NamedParameterJdbcTemplate 详解
  7. Tesseract-OCR 训练过程 V3.02
  8. Struct2小结:
  9. Python scrapy 动态传入自定义参数
  10. nik collection滤镜