Android 数据操作之SQLiteDatabase
来源:互联网 发布:网络交换机设置 编辑:程序博客网 时间:2024/06/06 02:30
在Android开发中经常要涉及到对数据的操作。Android本身提供了四种数据存储方式。包括:SharePreference,SQLite,Content Provider,File。
在Android,数据都是么私有的,要实现数据共享,正确方式是使用Content Provider。
SQLite: SQLite是一个轻量级的数据库,支持基本SQL语法,是常被采用的一种数据存储方式。Android为此数据库提供了一个名为SQLiteDatabase的类,封装了一些操作数据库的API。
SharedPreference: 除SQLite数据库外,另一种常用的数据存储方式,其本质就是一个xml文件,常用于存储较简单的参数设置。
File: 即常说的文件(I/O)存储方法,常用语存储大数量的数据,但是缺点是更新数据将是一件困难的事情。
ContentProvider: Android系统中能实现所有应用程序共享的一种数据存储方式,由于数据通常在各应用间的是互相私密的,所以此存储方式较少使用,但是其又是必不可少的一种存储方式。例如音频,视频,图片和通讯录,一般都可以采用此种方式进行存储。每个Content Provider都会对外提供一个公共的URI(包装成Uri对象),如果应用程序有数据需要共享时,就需要使用Content Provider为这些数据定义一个URI,然后其他的应用程序就通过Content Provider传入这个URI来对数据进行操作。
本文主要是讲一些SQLLite的操作并附上代码。
SQLite是一种转为嵌入式设备设计的轻型数据库,其只有五种数据类型,分别是:
NULL: 空值
INTEGER: 整数
REAL: 浮点数
TEXT: 字符串
BLOB: 大数据
在SQLite中,并没有专门设计BOOLEAN和DATE类型,因为BOOLEAN型可以用INTEGER的0和1代替true和false,而DATE类型则可以拥有特定格式的TEXT、REAL和INTEGER的值来代替显示,为了能方便的操作DATE类型,SQLite提供了一组函数,详见:http://www.sqlite.org/lang_datefunc.html。这样简单的数据类型设计更加符合嵌入式设备的要求。
- import android.content.ContentValues;
- import android.database.Cursor;
- import android.database.sqlite.SQLiteDatabase;
- /**
- * 对表的增删改查的操作。这里的表里只有uid一列作为举例。
- */
- public class DemoDBUtil {
- //要操作的表名
- public static final String DEMO_DB_NAME = "demo_db_name";
- //SQLiteDatabase对象
- private SQLiteDatabase sqLiteDatabase;
- /**
- * 带参构造方法,初始化SQLiteDatabase。
- * @param sqLiteDatabase SQLiteDatabase实例
- */
- public DemoDBUtil(SQLiteDatabase sqLiteDatabase){
- this.sqLiteDatabase = sqLiteDatabase;
- }
- /**
- * 增加数据。
- * @param uid 要新增的uid
- */
- public void add(String uid){
- ContentValues values = new ContentValues();
- values.put("uid", uid);
- sqLiteDatabase.insert(DEMO_DB_NAME, null, values);
- }
- /**
- * 删除表里所有数据。
- */
- public void delete(){
- sqLiteDatabase.delete(DEMO_DB_NAME, null, null);
- }
- /**
- * 删除表里与uid对应的数据。
- * @param uid 某个uid
- */
- public void delete(String uid){
- sqLiteDatabase.delete(DEMO_DB_NAME, "uid = ? ", new String[]{uid});
- }
- /**
- * 更新表,将表所有uid替换为newUid。
- */
- public void update(){
- ContentValues values = new ContentValues();
- values.put("uid", "newUid");
- sqLiteDatabase.update(DEMO_DB_NAME, values, null, null);
- }
- /**
- * 将表里对应的uid替换为newUid。
- * @param uid 表里的某个uid
- */
- public void update(String uid){
- ContentValues values = new ContentValues();
- values.put("uid", "newUid");
- sqLiteDatabase.update(DEMO_DB_NAME, values, "uid = ? ", new String[]{uid});
- }
- /**
- * 查询表里所有数据,取得uid对应的值。
- */
- public void query(){
- Cursor cursor = sqLiteDatabase.query(DEMO_DB_NAME, null, null, null, null, null, null);
- while (cursor.moveToNext()) {
- String uid = cursor.getString(cursor.getColumnIndex("uid"));
- }
- if (null != cursor) {
- cursor.close();
- }
- }
- /**
- * 取得对应uid的值。
- * @param uid 表里的某个uid
- */
- public void query(String uid){
- Cursor cursor = sqLiteDatabase.query(DEMO_DB_NAME, null, "uid = ? ", new String[]{uid}, null, null, null);
- while (cursor.moveToNext()) {
- String queryUid = cursor.getString(cursor.getColumnIndex("uid"));
- }
- if (null != cursor) {
- cursor.close();
- }
- }
- /**
- * 取得最后一条记录。
- */
- public void queryLastRecord(){
- String lastTimeSql = "select * from demo_db_name order by id desc LIMIT 1";
- Cursor cursor = sqLiteDatabase.rawQuery(lastTimeSql, null);
- while (cursor.moveToNext()) {
- String queryUid = cursor.getString(cursor.getColumnIndex("uid"));
- }
- if (null != cursor) {
- cursor.close();
- }
- }
- }
- Android 数据操作之SQLiteDatabase
- Android 数据操作之SQLiteDatabase
- Android数据保存之SQLiteDatabase
- Android中SQLiteDatabase操作
- 数据存储之SQLiteDatabase
- Android-SQLiteDatabase数据存储
- Android数据存储方式之SQLite(1、SQLiteDatabase)
- Android sqliteDataBase 操作DATETIME类型
- android的SQLiteDatabase操作类
- Android酱油笔记之SQLiteDatabase
- android数据库之SQLiteDatabase类
- Android入门之SQLiteDatabase联习
- 使用SQLiteDatabase操作SQLite数据库存储数据
- 使用嵌入式关系型SQLite数据库存储数据之使用SQLiteDatabase操作SQLite数据库
- Android 往Sqlitedatabase中插入大量数据效率问题,40倍效率加速你的操作
- SQLiteDatabase操作
- Android获取操作数据库的SQLiteDatabase实例
- Android 使用SQLiteDatabase操作SQLite数据库
- gcc visibility hidden 与 static
- UVALive 4255-Guess-拓扑排序
- Open vSwitch匹配处理流程和拓展性
- 基于java mail.jar邮件发送,最详细代码和讲解
- 工具类:快速字典转模型(NSObject 分类/runtime 用法2:获取属性列表)
- Android 数据操作之SQLiteDatabase
- Android小练习:过渡动画,引导页,判断是否第一次启动App
- 51 node 1050循环数组最大子段和
- 在Frame画图应用
- CF-Sereja and Algorithm
- 在window中net user administrator /active:no的解决策略
- 基站定位(Google API)
- 初识EJB
- 【问题】eclipse创建app时多出appcompat_v7