数据存储( SQLite )

1.回顾

上篇学习了SharedPreference 的 存储和获取;作为补充 说明下 SharedPreference

1)是一种轻型的数据存储方式 2) 本质是基于 xml文件的 key-value键值对数据 3)通常用来存储 简单的配置信息

4)默认存储路径:/data/data/<包名>/shared_prefs目录下

2.重点

(1)SQLite 的 介绍

(2) 数据类型

(3)优点

(4)SQLiteDataBase

(5)SQLiteOpenHelper

3.介绍

开源的嵌入式数据库,以单个文件的形式存在 (1)轻量级,一个动态库,单文件 (2)独立性,没有依赖,无须安装 (3)隔离性,全部在文件夹里 (4)跨平台 (5)多语言接口 (6)安全性,事务: 通过数据库上的独占性和共享锁来实现独立事务处理;多个线程读取,一个线程写入;

4.数据存储类型

Null Integer Real Text Blob 空 ,整型,浮点型 ,字符串值,二进制值 ;动态数据类型( 弱引用),可进行相关数据类型自动转换

5.优点

占用资源少 , 性能良好 ,0 管理成本 ;没有可用与 Sqlite 的网络服务器 ;

6.实现

创建的 db 文件存储在data/<包名>/databases/ 下

(1) SQLiteDatabase : 管理数据库类 创建 删除 执行 sql命令

例如:创建表的操作

SQLiteDatabase db=openOrCreateDatabase("yuan.db",MODE_PRIVATE,null);db.execSQL("create table if not exists labelnet(_id integer primary key autoincrement,name text not null,pass text not null)");

上面你的 SQLiteDatabase 创建的 db对象 ,可以执行通过 execSQL () 方法可以执行所有的 sql 语句实现增删改查 (sql 语句太多,就很恶心);

(2)ContentValues 实现

使用 ContentValues实现封装数据 ,后通过 insert() , update() ,delete() , query() 四个方法实现 增删改查,只需要传的参数不一样就行了;

注意:创建表 还需要的是 sql 语句哦!!!!

例子:

新增:调用上面的db对象 ,新增 20条数据

ContentValues values=new ContentValues();for(int i=0;i<20;i++){values.put("name","原");values.put("pass","123456");//返回值 为 行的 iddb.insert(DBNAME,null, values);values.clear();}

修改:

ContentValues values=new ContentValues();values.put("pass","111111");//修改db.update(DBNAME, values,"_id>?",new String[]{"10"}); 删除://删除db.delete(DBNAME,"pass=?",new String[]{"111111"}); 查询:使用 Cursor实现 ,Cursor cursor=dbs.query(DBNAME,null,"_id>?",new String[]{"0"},null,null,"_id");String str="数据库读取数据";if(cursor!=null){//得到 列明称String [] curName=cursor.getColumnNames();while(cursor.moveToNext()){for(String cn : curName){Log.i("cursor",cursor.getString(cursor.getColumnIndex(cn)));str+=cursor.getString(cursor.getColumnIndex(cn));}Log.i("cursor","…………………………………….");str+="\n";}}tv_show.setText(str);7.SQLiteOpenHelper 7.1 介绍

帮助你创建一个数据库,,你只要继承 SQLiteOpenHelper 类,就可以轻松的创建数据库。SQLiteOpenHelper 类根据开发应用程序的需要,封装了创建和更新数据库使用的逻辑。

新建类需要继承 自 SQLiteOpenHelper 类:需要实现几个方法:onCreate() ,onUpgrade() ,和 构造函数

7.2 例子package com.example.sqlite;import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteDatabase.CursorFactory;import android.database.sqlite.SQLiteOpenHelper;public class DB extends SQLiteOpenHelper {public DB(Context context, String name) {super(context, name, null, 1);}/** * 首次创建 数据库的时候调用 * 一般 把建库 和 键表操作 放在这里 */@Overridepublic void onCreate(SQLiteDatabase db) {// 一般 把建库 和 键表操作 放在这里db.execSQL("create table if not exists yuantest(_id integer primary key autoincrement,name text not null,pass text not null)");}/** * 当数据库版本发送改名的时候,自动调用 */@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {//当数据库版本发送改名的时候,自动调用}}

7.3 使用

(1)getReadableDatabase() 返回 只读数据库 (2)getWritableDatabase() 返回 可读可写

流过泪的眼睛更明亮,滴过血的心灵更坚强!

数据存储( SQLite )

相关文章:

你感兴趣的文章:

标签云: