Android-数据存储( 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");
			//返回值 为 行的 id
			db.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);
	}

	/**
	 * 首次创建 数据库的时候调用
	 * 一般 把建库 和 键表操作 放在这里
	 */
	@Override
	public 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)");

	}

	/**
	 * 当数据库版本发送改名的时候,自动调用
	 */
	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        //当数据库版本发送改名的时候,自动调用

	}

}

7.3 使用

(1) getReadableDatabase()  返回 只读数据库

(2)getWritableDatabase()     返回  可读可写

实现:

DB db=new DB(this,"yuan.db");
	SQLiteDatabase dbs=db.getWritableDatabase();

这样就返回 db对象了,下面的操作 和 6 一样了

8.Cursor 游标

不管你如何执行查询,都会返回一个 Cursor,这是 Android 的 SQLite 数据库游标,

(1)通过使用 getCount() 方法得到结果集中有多少记录;

(2)通过 moveToFirst(), moveToNext(), 和 isAfterLast() 方法遍历所有记录;

(3)通过 getColumnNames() 得到字段名;

(4)通过 getColumnIndex() 转换成字段号;

(5)通过 getString(),getInt() 等方法得到给定字段当前记录的值;

(6)通过 requery() 方法重新执行查询得到游标;

(7)通过 close() 方法释放游标资源;

使用的时候,一定要释放游标资源(占资源);

9. 总结

ContentValues 实际上和 Map , HashMap 一样的,需要清空的时候,就调用 clear()方法

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-11-01 09:55:05

Android-数据存储( SQLite )的相关文章

Android 数据存储——SQLite实例、判断数据库中表是否存在

本文主要记录一下Android SQLiteDatabase中如何判断数据库中表是否存在,以及测试SQLiteDatabase数据库的基本操作.有关SQLite的详细说明,可以查看转载的Android 数据存储--SQLite使用详解 例子: AndroidManifest.xml--没有做任何修改,创建工程默认 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="

Android数据存储——SQLite数据库

本篇整合Android数据库的使用,以保存一个实体类为例子. 先来看下数据库语句: ORM:关系对象映射 增加数据: ContentValues values = new ContentValues(); values.put("name", "小丽"); values.put("phone", "110"); mDB.insert("student",//表名 null, //规避插入语句的错误 valu

Android数据存储 如何搞定SQLite Database

转载请注明出处:明桑Android 在Android平台下有各种不同方法可以实现应用程序数据的存储和管理(SharedPerferences,File,SQLiteDatabase,网络存储),方法的选择依赖于需要存储的数据类型和数据结构.SQLite数据库能够安全而有效地解决结构化数据的存储问题: 这里主要介绍SQLite相关的用法,以及对数据库常见操作的封装. 最后,作为一个综合案例,做一个简单的学生管理的demo,创建student.db,包括name,grade字段,实现增.删.改.查的

Android——数据存储(四种方式之一)SharedPrefereces

Android--数据存储(四种方式) 1.SharedPrefereces   轻量级.XML  存储文件名,数据保存在data/data/basepackage/shared_prefs/myopt.xml中   实例-收藏-记住密码自动登录 //一种轻量级的数据存储方式//通过KEY 存入数据--putxxxx(key,value) 取出数据--getxxxx(key  default)   2.读写SD卡  SD的根目录  适用于数据流读写 3.SQLite  轻量级.dp文件多用于手机

Android 数据存储方式分为哪几种?

10道题值得思考 第一道题 1.Android 数据存储方式分为哪几种? SharedPreferences存储数据 2. CotentProvider内容提供者 3. 文件存储 4. 数据库存储(Sqlite) 5.网络存储 2. NDK是什么? 1. 一系列工具类的集合 2. Arm指令集 3. NDK提供了一系列的工具,帮助开发者快速开发C(或C++)的动态库,并能自动将so和java应用一起打包成apk.这些工具对开发者的帮助是巨大的. NDK集成了交叉编译器,并提供了相应的mk文件隔离

Android数据存储技术五大方式总结

本文介绍Android平台进行数据存储的五大方式,分别如下: 1 使用SharedPreferences存储数据 2 文件存储数据 3 SQLite数据库存储数据 4 使用ContentProvider存储数据 5 网络存储数据 下面详细讲解这五种方式的特点 第一种: 使用SharedPreferences存储数据     适用范围:保存少量的数据,且这些数据的格式非常简单:字符串型.基本类型的值.比如应用程序的各种配置信息(如是否打开音效.是否使用震动效果.小游戏的玩家积分等),解锁口令密码等

Unity本地数据存储---Sqlite和JSON

2014-04-30更新 剔除了使用网络上烂大街的SQLite使用方法(原因android下无法读取数据),使用libSQLite3.so,通过DLLImport,在C#代码里直接调用C接口 这种原生调用SQLite的方式,我在pc.android上亲测无误,ios没测过,但是stackoverflow上有兄弟试过,没问题.园子的朋友如果可以测IOS的,欢迎提供结果 基本思路,游戏基础配置数据,比如怪物的属性.装备模板属性.关卡怪物等,使用SQLite(Unity插件SQLiteUnityKit

Android——数据存储(四种方式之二)读写SD卡

Android--数据存储(四种方式) 1.SharedPrefereces 只能保存一些简单的数轻量级.XML  存储文件名, 数据保存在data/data/basepackage/shared_prefs/myopt.xml中    实例-收藏-记住密码自动登录 //一种轻量级的数据存储方式//通过KEY 存入数据--putxxxx(key,value) 取出数据--getxxxx(key  default) 2.读写SD卡  SD的根目录  适用于数据流读写 实现步骤:加入读写SD卡权限

Android数据存储之GreenDao 3.0 详解(一)

前言: 今天一大早收到GreenDao 3.0 正式发布的消息,自从2014年接触GreenDao至今,项目中一直使用GreenDao框架处理数据库操作,本人使用数据库路线 Sqlite---->OrmLite---->GreenDao.今天白天一直在忙着公司的项目需求,只能晚上加班来学习最新的GreenDao 3.0使用方式了. GreenDao 介绍: greenDAO是一个对象关系映射(ORM)的框架,能够提供一个接口通过操作对象的方式去操作关系型数据库,它能够让你操作数据库时更简单.更

android数据存储_概述

andorid提供了六种方式存储永久的数据,根据需求来使用不同的存储方式,例如是否对于应用程序时私有还是公有,数据存储的空间等. 六个存储方式: 使用SharedPreferences: 这种方式是使用键值对来存储私有的数据 内部存储: 在设备的内存中存储私有数据 外部存储: 在SD卡或其他的外部存储来存储公有数据 SQLite数据库: 在私有的数据库中存储私有的结构花数据 网络存储: 在网络服务中存储数据 私有数据一般情况下不能被访问,但是可以通过content provider来进行对数据的