Android中的数据持久化(一)

本文详细介绍了Android中的数据存储方式,包括SharedPreferences和SQLite数据库的使用方法。对于SharedPreferences,讲解了其特点及存储步骤;对于SQLite,介绍了其基本概念、在Android中的使用方法以及常见操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Android中的数据持久化

数据存储之SharedPreferences

SharedPreferences是用键值对的方式来存储数据的,也就是说当保存一条数据的时候,需要给这个数据提供一个对应的键,同时在取数据的时候就可以通过这个键把相对应的值取出来。

SharedPreferences的特点

  • 是一种轻质的数据存储方式
  • 本质是基于XML文件存储key-value键值对数据
  • 通常用来存储一些简单的配置信息

使用步骤

SharedPreferences对象本身只能获取数据并不支持存储和修改,存储和修改需要Editor对象来实现。
实现SharedPreferences的存储步骤如下:

  • 获得SharedPreferences对象
  • 获得SharedPreferences.Editor对象
  • 通过Editor接口的put方法保存key-value
  • 通过Editor接口的commit()方法保存键值对 也可以调用 apply()方法

例如:
SharedPreferences sharedPreferences = getSharedPreferences(“myPref”, MODE_PRIVATE);
这里的MODE_PRIVATE代表的是只能当前程序读取。
Editor editor = sharedPreferences.edit(); // 获取Editor()对象
editor.putString(“name”, “ZhangSan”);
editor.commit(); // commit() 提交生效
String username = sharedPreferences.getString(“name”, “”); // 第一个参数代表我们用’name’这个key所存储的值 第二个参数代表的是username默认的值 如果没有找到就用默认值来代替

数据存储之SQLite

什么是SQLite

SQLite是一款轻量级的关系型数据库,还遵循数据库的ACID事务。SQLite支持null, integer, reak, text和blob数据类型。并且SQLite没有用户概念,不支持网络传播。

Android中的使用

SQLiteDatabase
  • 提供了一些管理SQLite数据库的类
  • 提供创建、删除、执行SQL命令,并执行其他常见的数据库管理任务的方法。
  • 每个程序的数据库名字是唯一的
常用方法
  • db.execSQL(sql) //执行任何SQL语句
  • db.insert(table, nullColumnHack, values)
  • db.delete(table, whereClause, whereArgs)
  • db.update(table, values, whereClause, whereArgs)
  • db.query(table, columns, selection, selectionArgs, groupBy, having, orderBy)
  • db.rawQuery(sql, selectionArgs)

SQLiteDatabase db = openOrCreateDatabase(name, mode, factory);
* @param myDB.db 数据库的名字,最好以”.db”结尾,这样导出到外部的时候不需要再转格式
* @param MODE_PREIVATE 设置模式,私有(只能该应用程序访问),只读,读写等。
* @param CursorFactory 游标工厂。
* @openOrCreateDatabase 代表这个数据库没有的话会帮你创建,有的话会帮你直接打开。
db.execSQL(“create table if not exists user(_id integer primary key autoincrement)”);

Cursor

Cursor是android查询数据后得到的一个管理数据集合的类。

  • Cursor:游标接口,提供遍历查询结果的方法
  • getCount():总记录条数
  • isFirst():判断是否第一条记录
  • isLast():判断是否最后一条记录
  • moveToFirst():移动到第一条记录
  • moveToLast():移动到最后一条记录
  • move(int offset):移动到指定记录
  • moveToNext():移动到下一条记录

我们在使用游标的时候,可以让它先移动到第一条 moveToFirst(); 然后再移动到下一条,moveToNext();


例如:
我们可以直接使用SQL语句的方式。
db.rawQuery(sql, selectionArgs); 返回值是Cursor 第二个参数是查询条件的参数值
代码如下:

SQLiteDatabase db = openOrCreateDatabase("user.db", MODE_PRIVATE, null);
db.execSQL("create table if not exists user(_id integer primary key autoincrement, name text not null, sex text not null, age integer not null)");
db.execSQL("insert into user(name, sex, age) values ('ZhangSan', 'man', '23')");
Cursor cursor = db.rawQuery("select * from user", null);
if(cursor!=null){
    while(cursor.moveToNext()){
        Log.i("info", "_id" + cursor.getInt(cursor.getColumnIndex("_id")));
        Log.i("info", "name" + cursor.getString(cursor.getColumnIndex("name")));
        Log.i("info", "age" + cursor.getInt(cursor.getColumnIndex("age")));
        Log.i("info", "sex" + cursor.getString(cursor.getColumnIndex("sex")));
    }
    cursor.close();
}
db.close();

同时我们还可以使用SQLite()中提供的方式:

ContentValues values = new ContentValues();
values.put("name", "WZH");
values.put("sex", "female");
values.put("age", 23);
db.insert("user", null, values);
values.clear();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值