SQLite数据存储

简介:
-支持高大2TB的数据
-以单个文件形式存在
-以B-Tree的数据结构形式存储在硬盘上
特点:
1、轻量级,一个动态库、单文件
2、独立性,没有依赖、无需安装
3、隔离性 全部在一个文件夹中
4、跨平台,支持众多操作系统
5、多语言接口 支持众多编程语言
6、安全性 事物:通过数据库上的独占性和共享锁来实现独立事物处理,多个进程可以同时读,但是只能有一个可以写

SQLite的数据类型:
支持NULL,INTEGER, REAL, TEXT, BLOB
分别代表:空值,整型值,浮点值,字符串值,二进制对象
动态数据类型(弱引用):当某个值插入到数据库中,SQLite将会检查它的数据类型,如果该类型与关联的列不匹配,SQLite则会尝试将该值转换成该列的类型,如果不能转换,则该值将作为本身的类型存储。

使用须知:
-没有可用的SQLite的网络服务器,只能通过网络共享可能存在文件锁定或者性能问题。
-只提供数据库级的锁定
-没有用户概念,而是根据文件系统确定所有数据库的权限

SQLiteDatabase:
-提供管理SQLite数据库的类
-提供创建,删除,执行SQL命令,并执行其他常见的数据库管理任务方法
-每个数据库名字唯一
常用方法:
db.execSQL(sql)//执行任何sql语句
db.insert(table表名,nullColumnHack默认值,value要插入的值HashMap);
db.delete(String table,String whereColumn,String[] whereArgs);//第二第三两个参数构成条件
db.update(String table,ContentValues values,String whereClause,String[] whereArgs);
db,query(table,columns,selection,selectionArgs,groupBy,having,orderBy);
db.rawQuery(sql,selectionArgs);

实战使用SQLite数据库:

//每个程序都有一个自己的数据库  默认情况下是各自互相不干扰
//创建一个数据库,并且打开
//第一个参数为数据库名,可以没有后缀,在android中该文件不存在文件格式
//第二个参数时选择模式,私有的
//实例化的查询工厂,不常用,可为空
SQLiteDatabase db = openOrCreateDatabase("myDB.db", MODE_PRIVATE, null);
//可以利用以上的函数,格式如下
db.execSQL("create table if not exists usertb(_id integer primary key autoincrement,name text not null,age integer not null)");
//执行插入操作
db.execSQL("insert into usertb(name,age) values('张三',18)");
/**
查询语句执行,返回Cursor,Cursor是android查询数据后得到的一个管理数据集合的类,如果查询数据小,不会有问题,JVM最后会把内存释放掉,但如果数据量大,特别是有Blob信息,应当由开发人员手动及时释放内存,而不是去等待GC进行回收,如果等GC回收,那么会报错
*/
Cursor c = db.rawQuery("select * from usertb", null);
//遍历c,通过以下方法
if(c!=null){
            while (c.moveToNext()) {
                Log.i("info", c.getString(c.getColumnIndex("name")));
                Log.i("info", "age:"+c.getInt(c.getColumnIndex("age")));
            }
            //记住遍历完之后一定要释放内存
            c.close();
        }
//全部完成之后还要释放数据库
db.close();

Cursor方法

SQLiteOpenHelper:
SQLiteDatabase的帮助类,用于管理数据库的创建和版本更新
一般是建立一个类继承并重写onCreate()和onUpgrade()方法
方法说明:
onCreate(SQLiteDatabase db);//创建数据库调用
onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion);//版本更新时调用
getReadableDatabase();//创建或打开一个只读数据库
getWritableDatabase();//创建或打开一个读写数据库

使用方法:
继承SQLiteOpenHelper,重写:

public class SQLiteHelper extends SQLiteOpenHelper{

    public SQLiteHelper(Context context, String name) {
        super(context, name, null, 1);
    }

    public SQLiteHelper(Context context, String name, CursorFactory factory,
            int version, DatabaseErrorHandler errorHandler) {
        super(context, name, factory, version, errorHandler);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("create table if not exists stutb(_id integer primary key autoincrement,name text not null,age integer not null)");
        db.execSQL("insert into stutb(name,age) values('张三',18)");      
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }

}

/**
调用方式如下:
*/
SQLiteHelper sqLiteHelper = new SQLiteHelper(MainActivity.this, "stutb");
SQLiteDatabase db =sqLiteHelper.getWritableDatabase();
Cursor c = db.rawQuery("select * from stutb", null);
if(c!=null){
    while (c.moveToNext()) {
        Log.i("info", c.getString(c.getColumnIndex("name")));
        Log.i("info", "age:"+c.getInt(c.getColumnIndex("age")));
    }
    c.close();
}
db.close();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值