Android数据存储之SQLite

SQLite:Android提供的一个标准的数据库,支持SQL语句。
用来处理数据量较大的数据。
△ SQLite特征:
1.轻量性
2.独立性
3.隔离性
4.跨平台性
5.多语言接口
6.安全性
△ SQLite数据库的一般操作包括:创建数据库、打开数据库、创建表、向表中添加数据、从表中删除数据、修改表中的数据、关闭数据库、删除指定表、删除数据库和查询表中的某条数据。
1.创建和打开数据库:使用openOrCreateDatabase方法来实现,因为它会自动去检测是否存在这个数据库,如果存在则打开,如果不存在则创建一个数据库。
创建成功后返回一个SQLiteDatabase对象。
/* 数据库对象 */
private SQLiteDatabase  mSQLiteDatabase = this.openOrCreateDatabase(DATABASE_NAME, MODE_PRIVATE, null);
2.创建表:要创建表可以通过execSQL方法来执行一条SQL语句。
/* 创建表的sql语句 */
private final static String CREATE_TABLE = "CREATE TABLE " + TABLE_NAME + " (" + TABLE_ID + " INTEGER PRIMARY KEY," + TABLE_NUM + " INTERGER,"+ TABLE_DATA + " TEXT)";
  // 获取数据库Phones的Cursor
  try
  {
   /* 在数据库mSQLiteDatabase中创建一个表 */
   mSQLiteDatabase.execSQL(CREATE_TABLE);
  }
3.向表中添加一条数据:
可以使用insert方法来添加数据,但是insert方法要求把数据都打包到ContentValues中,ContentValues其实就是一个Map,Key值是字段名称,Value值是字段值。通过ContentValues的put方法就可以把数据放到ContentValues对象中,然后插入到表中去。
/* 更新一条数据 */
public void UpData()
{
  ContentValues cv = new ContentValues();
  cv.put(TABLE_NUM, 1);
  cv.put(TABLE_DATA, "测试数据库数据" );
  mSQLiteDatabase.insert(TABLE_NAME, null, cv );
  /* 同样可以通过execSQL 方法来执行一条"插入"的SQL语句,代码如下 :
  String INSTERT_DATA = "INSERT INTO table1(_id,num,data) values(1,1,'通过SQL语句插入')";
  mSQLiteDatabase.execSQL(INSERT_DATA);*/
}
4.从表中删除数据
mSQLiteDatabase.delete( "Examples.db", "WHERE _id="+0, null );
/* 也可以通过执行 execSQL 方法来执行SQL语句删除数据:
string DELETE_DATA = "DELETE FROM table1 WHERE _id=1";
mSQLiteDatabase.execSQL(DELETE_DATA); */
5.修改表中的数据
ContentValues cv = new ContentValues();
cv.put("TABLE_NUM",3);
cv.put("TABLE_DATA","修改后的数据");
mSQLiteDatabase.update("table1",cv,"num"+"="+Integer.toString(0), null );
6.关闭数据库
关闭数据库很重要,也是大家经常容易忘记的。关闭的方法很简单,直接使用SQLiteDatabase的close方法。
mSQLiteDatabase.close();
7.删除指定表
mSQLiteDatabase.execSQL("DROP TABLE table1");
8.删除数据库
this.deleteDatabase("Examples.db");
9.查询表中的某条数据
Android中查询数据通过Cursor类来实现的。我们使用SQLiteDatabase.query()方法,会得到一个Cursor对象,Cursor指向的就是每一条数据。
代码如下:
/* 删除数据库 */
public void DeleteDataBase()
{
  this.deleteDatabase(DATABASE_NAME);
  this.finish();
}

/* 删除一个表 */
public void DeleteTable()
{
  mSQLiteDatabase.execSQL("DROP TABLE " + TABLE_NAME);
  this.finish();
}

/* 更新一条数据 */
public void UpData()
{
  ContentValues cv = new ContentValues();
  cv.put(TABLE_NUM, miCount);
  cv.put(TABLE_DATA, "修改后的数据" + miCount);
  /* 更新数据 */
  mSQLiteDatabase.update(TABLE_NAME, cv, TABLE_NUM + "=" + Integer.toString(miCount - 1), null);
  UpdataAdapter();
}

/* 向表中添加一条数据 */
public void AddData()
{
  ContentValues cv = new ContentValues();
  cv.put(TABLE_NUM, miCount);
  cv.put(TABLE_DATA, "测试数据库数据" + miCount);
  /* 插入数据 */
  mSQLiteDatabase.insert(TABLE_NAME, null, cv);
  miCount++;
  UpdataAdapter();
}

/* 从表中删除指定的一条数据 */
public void DeleteData()
{
  /* 删除数据 */
  mSQLiteDatabase.execSQL("DELETE FROM " + TABLE_NAME + " WHERE _id=" + Integer.toString(miCount));
  miCount--;
  if (miCount < 0)
  {
   miCount = 0;
  }
  UpdataAdapter();
}
☆ SQLiteOpenHelper应用:
在使用SQLiteOpenHelper时需要注意:SQLiteOpenHelper的构造方法中分别需要传入Content、数据库名称、CursorFactory(一般传入null,否则为默认数据库)、数据库版本号(不能为负数)。SQLiteOpenHelper构造函数中并没有真正创建数据库,而是在调用getWritableDatabase或者getReadableDatabase方法时才真正去创建数据库,并返回一个SQLiteDatabase对象。
代码如下:
// 打开数据库,返回数据库对象
public void open() throws SQLException
{
  mDatabaseHelper = new DatabaseHelper(mContext);
  mSQLiteDatabase = mDatabaseHelper.getWritableDatabase();
}

// 关闭数据库
public void close()
{
  mDatabaseHelper.close();
}
/* 插入一条数据 */
public long insertData(int num, String data)
{
  ContentValues initialValues = new ContentValues();
  initialValues.put(KEY_NUM, num);
  initialValues.put(KEY_DATA, data);
  return mSQLiteDatabase.insert(DB_TABLE, KEY_ID, initialValues);
}
/* 删除一条数据 */
public boolean deleteData(long rowId)
{
  return mSQLiteDatabase.delete(DB_TABLE, KEY_ID + "=" + rowId, null) > 0;
}
/* 通过Cursor查询所有数据 */
public Cursor fetchAllData()
{
  return mSQLiteDatabase.query(DB_TABLE, new String[] { KEY_ID, KEY_NUM, KEY_DATA }, null, null, null, null, null);
}
/* 查询指定数据 */
public Cursor fetchData(long rowId) throws SQLException
{
  Cursor mCursor =
  mSQLiteDatabase.query(true, DB_TABLE, new String[] { KEY_ID, KEY_NUM, KEY_DATA }, KEY_ID + "=" + rowId, null, null, null, null, null);
  if (mCursor != null)
  {
   mCursor.moveToFirst();
  }
  return mCursor;
}
/* 更新一条数据 */
public boolean updateData(long rowId, int num, String data)
{
  ContentValues args = new ContentValues();
  args.put(KEY_NUM, num);
  args.put(KEY_DATA, data);
  return mSQLiteDatabase.update(DB_TABLE, args, KEY_ID + "=" + rowId, null) > 0;
}

相关参考链接:http://www.apkbus.com/forum.php?mod=viewthread&tid=140454

http://www.apkbus.com/android-726-1-1.html

http://www.apkbus.com/forum.php?mod=viewthread&tid=15731

相关代码下载链接:http://www.apkbus.com/android-141976-1-1.html

Android数据存储:SQLite的更多相关文章

  1. Android数据存储——SQLite数据库(模板)

    本篇整合Android使用数据库,要保存一个实体类的样本. 首先看一下数据库语句: ORM:关系对象映射 添加数据: ContentValues values = new ContentValues( ...

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

    Android数据存储 之SQLite数据库简介 SQLite的相关知识,并结合Java实现对SQLite数据库的操作. SQLite是D.Richard Hipp用C语言编写的开源嵌入式数据库引擎. ...

  3. Android数据存储之SQLCipher数据库加密

    前言: 最近研究了Android Sqlite数据库(文章地址:Android数据存储之Sqlite的介绍及使用)以及ContentProvider程序间数据共享(Android探索之ContentP ...

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

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

  5. Android数据存储方式--SharedPreferences

    Android数据存储方式有如下四种:SharedPreferences.存储到文件.SQLite数据库.内容提供者(Content provider).存储到网络服务器. 本文主要介绍一下Share ...

  6. 10、Android数据存储

    课程目标: 掌握Android中数据存储的几种方式 熟练使用PreferenceActivity&PreferenceScreen做专业的Setting功能 熟练使用SQLite3来存储数据 ...

  7. Android数据存储五种方式

    1 使用SharedPreferences存储数据:常用于做本地缓存 2 文件存储数据:(1)data/data/<package name>/files目录内   (2)SDCard内 ...

  8. Android数据存储:Shared Preferences

    Android数据存储之SharedPreferences 在Android系统中提供了多种存储技术.通过这些存储技术可以将数据存储在各种存储介质上, Android 为数据存储提供了如下几种方式:1 ...

  9. 【Android开发日记】之入门篇(八)——Android数据存储(下)

    废话不多说了,紧接着来讲数据库的操作吧.Come On! 提到数据存储问题,数据库是不得不提的.数据库是用来存储关系型数据的不二利器.Android为开发者提供了强大的数据库支持,可以用来轻松地构造基 ...

随机推荐

  1. HDU 1069 Monkey and Banana / ZOJ 1093 Monkey and Banana (最长路径)

    HDU 1069 Monkey and Banana / ZOJ 1093 Monkey and Banana (最长路径) Description A group of researchers ar ...

  2. [Cqoi2014]数三角形——组合数

    Description: 给定一个nxm的网格,请计算三点都在格点上的三角形共有多少个.下图为4x4的网格上的一个三角形. 注意三角形的三点不能共线. Hint: 1<=m,n<=1000 ...

  3. img标签浏览器缓存图片问题

    问题:项目中用的img标签及其src属性,但是发现浏览器会缓存图片,这样每次如果修改了图片,再重新打开预览发现图片还是原来的. 原因:因为src后面的请求路径不变,所以浏览器就认为是同一个图片,就不会 ...

  4. iptables后,外网访问网站可以,内网无法访问【已解决】

    最近,到处看到有人问这个问题,怎么以前没人问,现在这么多人问呢?前两天我还在华为的论坛上仔细的说了这个问题,现在复制到这边来.希望能帮助大家理解这个问题. 这是个理论问题,我们先从NAT讲起:NAT有 ...

  5. ajaxSubmit 提交form 表单

    $(document).on('click','#submit_title_btn',function(){ var title = $("#title").val(); if ( ...

  6. Curl中的参数知多少

    我们常用的curl命令,后面有好多参数,都是什么含义呢?遂记录此文以备用. Curl命令参数解释: -a/--append 上传文件时,附加到目标文件 -A/--user-agent <stri ...

  7. Gulp小记

    安装 总的来说,玩gulp的流程是这样的: 安装nodejs -> 全局安装gulp -> 项目安装gulp以及gulp插件 -> 配置gulpfile.js -> 运行任务 ...

  8. 用 Vue 开发一个简单的答题应用(一)

    Vue 之类的 MVVM 框架,能帮助我们用更少的代码实现复杂的业务. 为了简单一点,开发计划分成三阶段: 一,数据写死,实现基本的答题效果.支持多种题型. 二,使用本地存储保存数据,支持题目录入的功 ...

  9. sql 各种常用函数

    1.stuff函数 替换制定字符串 stuff(,,'许嵩') 结果: 最帅的许嵩最帅的我 2.replace函数 select replace('蜀云泉真是帅啊','蜀云泉','许嵩') 结果: 许 ...

  10. tomcat配置好后,启动eclipse中的server,不能出现有猫的页面,提示404

    原因:tomcat与eclipse中的server未关联起来 解决办法:双击servers中的server,在Server Locations中选中第二项,保存之后再进行刚才的操作就好了.