Android 移动存储---SQLite

欢迎查看关于Android数据存储的5种方式

黑夜给了我黑色的眼睛,但我却用它来刷微博。 —亚当爱自拍、


  • Android的五种存储方式
  • SQLit简介
  • 数据库语法
  • 关于SQLiteOpenHelper的使用技巧
  • 代码示例

Android的五中存储方式

SharedPreferences 存储数据、文件存储、SQLite数据库存储、ContentProvider存储数据、网络存储

SQLite简介

SQLite 是一个软件库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。

序号函数描述
1SQLite COUNT聚集函数是用来计算一个数据库表中的行数。
2SQLite MAX聚合函数允许我们选择某列的最大值。
3SQLite MIN聚合函数允许我们选择某列的最小值。
4SQLite AVG聚合函数计算某列的平均值。
5SQLite SUM聚合函数允许为一个数值列计算总和。
6SQLite RANDOMSQLite RANDOM 函数返回一个介于 -9223372036854775808 和 +9223372036854775807 之间的伪随机整数。
7SQLite ABS 函数函数返回数值参数的绝对值。
8SQLite UPPER 函数函数把字符串转换为大写字母。
9SQLite LOWER 函数SQLite LOWER 函数把字符串转换为小写字母。
10SQLite LENGTH 函数SQLite LENGTH 函数返回字符串的长度。
11SQLite sqlite_versionSQLite 库的版本。

数据库语法

SQLite 语句

所有的SQlite语句都是以关键字开始:如SELECT 、INSERT 、UPDATE 、DELETE 、ALTER 、DROP 等,所有的语句都要以(;)结束。

SQLite ANALYZE 语句

ANALYZE;
or
ANALYZE database_name;
or
ANALYZE database_name.table_name;

SQLite AND/OR 子句

SELECT column1, column2….columnN
FROM table_name
WHERE CONDITION-1 {AND|OR} CONDITION-2;

SQLite ALTER TABLE 语句

ALTER TABLE table_name ADD COLUMN column_def…;

SQLite CREATE TABLE 语句

CREATE TABLE table_name(
column1 datatype,
column2 datatype,
column3 datatype,
…..
columnN datatype,
PRIMARY KEY( one or more columns )
);

SQLite COUNT 子句

SELECT COUNT(column_name)
FROM table_name
WHERE CONDITION;

SQLite DELETE 语句

DELETE FROM table_name
WHERE {CONDITION};

SQLite DROP TABLE 语句

DROP TABLE database_name.table_name;

SQLite GROUP BY 子句

SELECT SUM(column_name)
FROM table_name
WHERE CONDITION
GROUP BY column_name;

SQLite HAVING 子句

SELECT SUM(column_name)
FROM table_name
WHERE CONDITION
GROUP BY column_name
HAVING (arithematic function condition);

SQLite INSERT INTO 语句

INSERT INTO table_name( column1, column2….columnN)
VALUES ( value1, value2….valueN);

SQLite Like 子句

SELECT column1, column2….columnN
FROM table_name
WHERE column_name LIKE { PATTERN };

SQLite ORDER BY 子句

SELECT column1, column2….columnN
FROM table_name
WHERE CONDITION
ORDER BY column_name {ASC|DESC};

SQLite SELECT 语句

SELECT column1, column2….columnN
FROM table_name;

SQLite UPDATE 语句

UPDATE table_name
SET column1 = value1, column2 = value2….columnN=valueN
[ WHERE CONDITION ];

SQLite WHERE 子句

SELECT column1, column2….columnN
FROM table_name
WHERE CONDITION;

关于SQLiteOpenHelper的使用技巧

android 平台给我们提供了一个管理数据库的辅助类帮助我们来创建或打开数据库,这个类继承自SQLiteOptenHelper 。
基本用法:
在该类的构造器中,调用Context中的方法创建并打开一个指定名称的数据库对象。继承和扩展SQLiteOpenHelper类主要做的工作就是重写以下两个方法。
onCreate(SQLiteDatabase db) : 当数据库被首次创建时执行该方法,一般将创建表等初始化操作在该方法中执行。
onUpgrade(SQLiteDatabse dv, int oldVersion,int new Version):当打开数据库时传入的版本号与当前的版本号不同时会调用该方法。
还有一个方法选用:onOpen() :当每次打开数据库时被调用

代码示例



import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteDatabase.CursorFactory;

public class MySQLiteHelper extends SQLiteOpenHelper{
    private static final String DATABASE_NAME = "hero";
    private static final int VERSION = 8;
    public static SQLiteDatabase dbInstance = null;

  //调用父类构造器
public MySQLiteHelper(Context context, String name, CursorFactory factory,int version) {
   super(context, DATABASE_NAME, null, VERSION);
  }

  /**
   * 当数据库首次创建时执行该方法,一般将创建表等初始化操作放在该方法中执行.
   * 重写onCreate方法,调用execSQL方法创建表
   * */
  @Override
  public void onCreate(SQLiteDatabase db) {
        UserTable.createTable(db);
        OptTable.createTable(db);
        CommonMsgTable.createTable(db);

  }

  //当打开数据库时传入的版本号与当前的版本号不同时会调用该方法
  @Override
  public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {    
    //增加新字段是使用
        if (oldVersion < 2) {
            String sql = "ALTER TABLE " + OptTable.TABLE_NAME + " ADD COLUMN " + OptTable.OPT_FROM_ID + " text ";
            excuteSql(db, sql);
        }
  }
  // 获取单例
  public  static  synchronized SQLiteDatabase getDbInstance() {
        if (dbInstance == null || !dbInstance.isOpen()){
            MySQLiteHelper dbOpenHelper = new MySQLiteHelper(APP.getInstance());
            dbInstance = dbOpenHelper.getWritableDatabase();
        }
        return dbInstance;
    }
  // 关闭数据库
  public static  synchronized boolean closeDB() {
        if (dbInstance == null) {
            return true;
        }
        if (dbInstance.isOpen() && !dbInstance.isDbLockedByOtherThreads()) {
            dbInstance.close();
        }
        return !dbInstance.isOpen();
    }
}


参考自:http://www.tuicool.com/articles/neEz2qr

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值