SharedPreferences和SQlite数据库
目录
SharedPreferences的创建方法:
第一种:
通过getSharedPreferences创建
第二种
通过getPreferences(int mode)。
SharedPreferences有两大功能:
写入流程:
1.获取 Sharedprefenrences
2.借助Editor
3.写入数据
4.提交数据
读取流程
1.获取 Shareprefenrences
2.根据键获取值
SQlite数据库
SQlite优点:
创建数组库的步骤
SQlite的查询
SQlite的删除
数据库操作的分类
SharedPreferences的创建方法:
第一种:
通过getSharedPreferences创建
SharedPreferences 本身是一个接口,程序无法直接创建 SharedPreferences 的实例,只能通过 Context 提供的 getSharedPreferences(String name,int mode) 方法来获取 SharedPreferences 的实例,其中有两个参数:第一个参数用于指定 SharedPreferences 文件的名称(格式为 xml 文件),如果该名称的文件不存在则会创建一个。第二个参数用于指定操作的模式,如下:
MODE_PRIVATE:默认操作模式,只有本应用程序才可以对这个 SharedPreferences 文件进行读写。
MODE_WORLD_READABLE:其他应用对这个 SharedPreferences 文件只能读不能修改。
MODE_WORLD_WRITEABLE:这个 SharedPreferences 文件能被其他的应用读写。
MODE_MULTI_PROCESS:这个模式在 Android2.3 之后已经弃之不用了,可以省略。
第二种
通过getPreferences(int mode)。
当应用程序中仅需要一个SharedPreferences对象时,使用该方法获取当前 Activity 对应的 SharedPreferences,而不需要指定 SharedPreferences 的名字。
其中,参数 mode 有 4 种取值,分别是:
MODE_PRIVATE:默认方式,只能被创建的应用程序或者与创建的应用程序具有相同用户 ID 的应用程序访问。
MODE_WORLD_READABLE:允许其他应用程序对该 SharedPreferences 文件进行读操作。
MODE_WORLD_WRITEABLE:允许其他应用程序对该 SharedPreferences 文件进行写操作。
MODE_MULTI_PROCESS:在多进程应用程序中,当多个进程都对同一个 SharedPreferences 进行访问时,该文件的每次修改都会被重新核对。
SharedPreferences有两大功能:
写入流程:
1.获取 Sharedprefenrences
SharedPreferences sp = getSharedPreferences("userinfo", MODE_PRIVATE);
2.借助Editor
SharedPreferences.Editor edit = sp1.edit();
3.写入数据
数据都是键值对的形式
edit.putString("user",name);edit.putString("pwd",pwd1);
4.提交数据
edit.commit();
读取流程
1.获取 Shareprefenrences
SharedPreferences sp = getSharedPreferences("userinfo", MODE_PRIVATE);
2.根据键获取值
String user = sp.getString("user", "");String pwd = sp.getString("pwd", "");
SQlite数据库
SQlite优点:
SQLite是一款轻型的嵌入式数据库,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就足够了。它的处理速度比Mysql、PostgreSQL这两款著名的数据库都还快。SQLite提供一些C函数接口,可以用这些函数操作数据库。通过使用这些接口,传递一些标准 sql 语句(以 char * 类型)给 SQLite函数,SQLite就会为你操作数据库。
零配置,无需安装和管理配置
储存在单一磁盘文件中的一个完整的数据库
数据库文件可以在不同字节序的机器间自由共享
支持数据库大小至2TB
足够小,比目前流行的大多数数据库对数据的操作要快
SQLite 轻量 无需配置的 本地化
创建数组库的步骤
- 借用Class,DBHelper 继承SQLiteOpenHelper
- 实现两个抽象方法 onCreate() onUpgrade() 创建一个带参的构造方法
- 在构造方法中 创建数据库
- 在onCreate() 方法中,创建表和插入数据
package com.wzk.day7;import android.content.ContentValues;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;import androidx.annotation.Nullable;
//在构造方法里创建数据库
public class DBHelper extends SQLiteOpenHelper {public DBHelper(@Nullable Context context) {super(context, "userinfo.db", null, 1);}@Overridepublic void onCreate(SQLiteDatabase db) {//创建表db.execSQL("create table userinfo(id interger primary key,user text,pwd text)");//向表中插入数据//1.写sql语句(推荐)db.execSQL("insert into userinfo values(1,'root','0000')");//SQlite自带ContentValues values=new ContentValues();values.put("id",8);values.put("user","88");values.put("pwd","99");long w = db.insert("userinfo", null, values);}@Overridepublic void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {}
}
SQlite的查询
protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main2);DBHelper dbHelper = new DBHelper(MainActivity2.this);/*dbHelper.getWritableDatabase();*///查询String sql="select * from userinfo";//获取数据库对象SQLiteDatabase db = dbHelper.getWritableDatabase();//执行查询,将结果放进游标卡尺Cursor cursor = db.rawQuery(sql, null);//取出结果List<UserInfo> list = new ArrayList<>();while (cursor.moveToNext()){UserInfo userInfo=new UserInfo();userInfo.setId(cursor.getInt(0));userInfo.setUser(cursor.getString(1));userInfo.setPwd(cursor.getString(2));list.add(userInfo);}for (UserInfo userinfo:list) {int id = userinfo.getId();String user = userinfo.getUser();String pwd = userinfo.getPwd();Log.i("n", "id: "+id+"user"+user+"pwd"+pwd);}//释放资源db.close();}
SQlite的删除
@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main3);//创造实例DBHelper dbHelper = new DBHelper(MainActivity3.this);//获取数据库SQLiteDatabase db = dbHelper.getWritableDatabase();//执行删除String sql="delete from userinfo where id=?";db.execSQL(sql,new Object[]{1});//释放资源db.close();Log.i("shujvku", "删除成功");}
数据库操作的分类
- 增删改分为一类,返回的是受影响的行数
- 而查询返回的是他查询到的结果集。
SharedPreferences和SQlite数据库相关推荐
- Android数据存储、文件存储、SQLite数据库简单使用、 sharedPreferences存储(五)
文章目录 5 数据存储 5.1 数据的存储方式 5.2 文件存储 5.2.1 将数据存入文件中 5.2.2 从文件中读取数据 5.2.3 实战演练-保存QQ账号和密码(内部存储) 5.2.4 实战演练 ...
- 使用嵌入式关系型SQLite数据库存储数据
除了可以使用文件或SharedPreferences存储数据,还可以选择使用SQLite数据库存储数据. 在Android平台上,集成了一个嵌入式关系型数据库-SQLite,SQLite3支持 NUL ...
- 【转】Android使用嵌入式关系型SQLite数据库存储数据【学习记录】
为什么80%的码农都做不了架构师?>>> 除了可以使用文件或SharedPreferences存储数据,还可以选择使用SQLite数据库存储数据. 在Android平台上,集成 ...
- Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File (四) —— ContentProvider...
ContentProvider是安卓平台中,在不同应用程序之间实现数据共享的一种机制.一个应用程序如果需要让别的程序可以操作自己的数据,即可采用这种机制.并且此种方式忽略了底层的数据存储实现,Cont ...
- Android的sqlite使用外部,Android 使用外部已经建立好的sqlite数据库
最近项目需要通过电话号码查询归属地,决定直接在本地sqlite的数据库进行查询,没必要去访问网络(虽然最后还是决定还是将数据库放在服务器上 ) 一 首先先将外部的sqlite数据库放入assets文件 ...
- Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File 之 —— SharedPreferences...
除了SQLite数据库外,SharedPreferences也是一种轻型的数据存储方式,它的本质是基于XML文件存储key-value键值 对数据,通常用来存储一些简单的配置信息.其存储位置在/dat ...
- android入门基础笔记,Sqlite数据库下载
* 移动通讯技术的发展: 第一代通讯技术:模拟信号 工作频段 缺点:保密性差 第二代通讯技术: 体积越来越小 数字信号(加密) 短信 彩信 第三代通讯技术: 数字信号 可处理图像.音乐 ...
- android用户头像保存,Android的登陆注册(sharedpreferences和SQLite保存以及头像上传显示...
[实例简介] ①该资源中片段代码截取于网上,特别感谢网上的大神 ②该Demo是一个android的简单注册登录,包括: ∷SQLite的注册数据保存 ∷注册登录数据的shakeAnimation验证 ...
- android如何实现用户注册功能,Android 实现简单的登录注册功能(SharedPreferences和SQLite)...
最近恰好作了一个Android的登陆注册界面,将数据利用SharedPreferences或者SQLite绑定到Android程序中,实现简单的登录注册功能,本文未涉及到与服务器的交流.java 首先 ...
最新文章
- 上升沿_为什么示波器上升时间 Tr=0.35/BW ?
- 解决 MSChart控件 X轴坐标显示不全的问题
- CTF web题总结--爆破用户名密码
- ubuntu 定时执行任务at
- 分享百度文库提交成功的八大因素
- 学好Java的10个建议
- 什么?你竟然还没有用这几个chrome插件? 1
- 技术宅的乐趣!网友编写出《流浪地球》“春节十二响”C语言源码
- Vue中如何实现代码高亮功能?
- 使用PL/SQL删除百万条记录的大表
- [傅里叶变换及其应用学习笔记] 十五. 傅里叶变换在衍射上的应用
- C# 怎么生成DLL文件(转)
- 饿了么,美团外卖红包小程序欢迎了解一下(0基础搭建自己的外卖分销cps小程序)
- asm磁盘头全部损坏数据0丢失恢复----惜分飞
- 整理了上千个Python类库,简直太酷啦!
- iOS获取UUID,并使用keychain存储,可用于封设备
- Visual C++ 2015 Redistributable安装失败,错误代码0x80240017?
- 凑巧,电脑的双系统删除了2345的残留服务和缓存!
- Leetcode 208、实现Trie(前缀树)
- 学生表(Student)、课程表(Course)、成绩表(Score)以及教师信息表(Teacher)...
热门文章
- 项目经理常用的12大工具及5大最佳项目管理软件
- SVN服务器搭建、客户端安装超详细图解教程
- Python爬取雪球7*24小时信息
- DbVisualizer 9 解决中文乱码问题(win7,win10)
- AnimationEvent 'XXX' has no receiver!
- 第5章第17节:案例:使两张幻灯片中的图片进行平滑切换 [PowerPoint精美幻灯片实战教程]
- 网站后台——用户上传图片剪切
- 导航AGV设计方案 此方案为市面上成熟的磁导航AGV设计方案
- 三星很陶醉:爷会成为智能手机之王
- gitee上传大小超过100M文件