SharedPreferences的使用与Sqlite的使用
目录
ShapePreferences的使用
SharedPreferences的概述
增加数据
删除数据
修改数据
获取数据
清空数据
SqLite的简单介绍
Sqlite的使用
Sqlite数据库的创建
增加数据
更新数据
删除数据
查询数据
ShapePreferences的使用
SharedPreferences的概述
SharedPreferences是Android平台上一个轻量级的存储辅助类,用来保存应用的一些常用配置,它提供了String,set,int,long,float,boolean六种数据类型。SharedPreferences的数据以键值对的进行保存在以xml形式的文件中。在应用中通常做一些简单数据的持久化缓存。
增加数据
//获取SharedPreferences对象SharedPreferences sharedPreferences=getSharedPreferences("user",MODE_PRIVATE);//获取Editor对象的引用SharedPreferences.Editor editor=sharedPreferences.edit();//将获取过来的值放入文件editor.putString("name","wcl");editor.putInt("age",21);// 提交数据editor.commit();
删除数据
//获取SharedPreferences对象SharedPreferences sharedPreferences2=getSharedPreferences("user",MODE_PRIVATE);//获取Editor对象的引用SharedPreferences.Editor editor2=sharedPreferences2.edit();editor2.remove("age");// 提交数据editor2.commit();break;
修改数据
//获取SharedPreferences对象SharedPreferences sharedPreferences1=getSharedPreferences("user",MODE_PRIVATE);//获取Editor对象的引用SharedPreferences.Editor editor1=sharedPreferences1.edit();//将获取过来的值放入文件editor1.putString("name","czl");// 提交数据editor1.commit();
获取数据
//获取SharedPreferences对象SharedPreferences sharedPreferences3=getSharedPreferences("user",MODE_PRIVATE);//获取数据String name=sharedPreferences3.getString("name","");Toast.makeText(this,"Editor"+name,Toast.LENGTH_SHORT).show();break;
清空数据
//获取SharedPreferences对象SharedPreferences sharedPreferences4=getSharedPreferences("user",MODE_PRIVATE);//获取Editor对象的引用SharedPreferences.Editor editor3=sharedPreferences4.edit();//清空数据editor3.clear();//提交数据editor3.commit();
实例代码:
package com.c201801080119.day_4;import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.ShareActionProvider;import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}public void click(View view) {switch (view.getId()){case R.id.button://获取SharedPreferences对象SharedPreferences sharedPreferences=getSharedPreferences("user",MODE_PRIVATE);//获取Editor对象的引用SharedPreferences.Editor editor=sharedPreferences.edit();//将获取过来的值放入文件editor.putString("name","wcl");editor.putInt("age",21);// 提交数据editor.commit();break;case R.id.button2://获取SharedPreferences对象SharedPreferences sharedPreferences1=getSharedPreferences("user",MODE_PRIVATE);//获取Editor对象的引用SharedPreferences.Editor editor1=sharedPreferences1.edit();//将获取过来的值放入文件editor1.putString("name","czl");// 提交数据editor1.commit();break;case R.id.button3://获取SharedPreferences对象SharedPreferences sharedPreferences2=getSharedPreferences("user",MODE_PRIVATE);//获取Editor对象的引用SharedPreferences.Editor editor2=sharedPreferences2.edit();editor2.remove("age");// 提交数据editor2.commit();break;case R.id.button4://获取SharedPreferences对象SharedPreferences sharedPreferences3=getSharedPreferences("user",MODE_PRIVATE);//获取数据String name=sharedPreferences3.getString("name","");Toast.makeText(this,"Editor"+name,Toast.LENGTH_SHORT).show();break;case R.id.button5://获取SharedPreferences对象SharedPreferences sharedPreferences4=getSharedPreferences("user",MODE_PRIVATE);//获取Editor对象的引用SharedPreferences.Editor editor3=sharedPreferences4.edit();//清空数据editor3.clear();//提交数据editor3.commit();break;}}
}
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><Buttonandroid:id="@+id/button3"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="63dp"android:layout_marginEnd="1dp"android:layout_marginRight="1dp"android:onClick="click"android:text="删除数据"app:layout_constraintEnd_toEndOf="@+id/button2"app:layout_constraintTop_toBottomOf="@+id/button2" /><Buttonandroid:id="@+id/button"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginStart="117dp"android:layout_marginLeft="117dp"android:onClick="click"android:layout_marginTop="48dp"android:text="增加数据"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent" /><Buttonandroid:id="@+id/button2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:onClick="click"android:layout_marginStart="1dp"android:layout_marginLeft="1dp"android:layout_marginTop="57dp"android:text="修改数据"app:layout_constraintStart_toStartOf="@+id/button"app:layout_constraintTop_toBottomOf="@+id/button" /><Buttonandroid:id="@+id/button4"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginStart="4dp"android:onClick="click"android:layout_marginLeft="4dp"android:layout_marginTop="56dp"android:text="查询数据"app:layout_constraintStart_toStartOf="@+id/button3"app:layout_constraintTop_toBottomOf="@+id/button3" /><Buttonandroid:id="@+id/button5"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginStart="4dp"android:layout_marginLeft="4dp"android:onClick="click"android:layout_marginTop="56dp"android:text="清楚数据"app:layout_constraintStart_toStartOf="@+id/button4"app:layout_constraintTop_toBottomOf="@+id/button4" /></androidx.constraintlayout.widget.ConstraintLayout>
SqLite的简单介绍
SQLite 一个非常流行的嵌入式数据库,它支持 SQL 语言,并且只利用很少的内存就有很好的性能。此外它还是开源的,任何人都可以使用它。
Sqlite的使用
Sqlite数据库的创建
通过继承SQLiteOpenHelper类去实现,SQLiteOpenHelper
有两个抽象方法onCreate()
和onUpgrade()
,必须在自己的类中重写这两个方法,然后分别在这两个方法中实现创建
和升级
数据库的逻辑。
package com.c201801080119.day_4;import android.content.Context;
import android.database.DatabaseErrorHandler;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.os.Build;import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi;class Demo extends SQLiteOpenHelper {public Demo(@Nullable Context context, @Nullable String name, @Nullable SQLiteDatabase.CursorFactory factory, int version) {super(context, name, factory, version);}public Demo(@Nullable Context context, @Nullable String name, @Nullable SQLiteDatabase.CursorFactory factory, int version, @Nullable DatabaseErrorHandler errorHandler) {super(context, name, factory, version, errorHandler);}@RequiresApi(api = Build.VERSION_CODES.P)public Demo(@Nullable Context context, @Nullable String name, int version, @NonNull SQLiteDatabase.OpenParams openParams) {super(context, name, version, openParams);}@Overridepublic void onCreate(SQLiteDatabase db) {String sting="create table user(id integer primary key autoincrement,username varchar(20),password varchar(20),age integer)";db.execSQL(sting);}@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {}
}
增加数据
调用insert方法
ContentValues contentValues=new ContentValues();contentValues.put("username","cs");contentValues.put("password","123456");contentValues.put("age",21);sqLiteDatabase.insert("user",null,contentValues);
更新数据
调用update的方法
ContentValues contentValues1=new ContentValues();contentValues1.put("username","css");sqLiteDatabase.update("user",contentValues1,"username=?",new String[]{"cs"});
删除数据
调用delete对象
sqLiteDatabase.delete("user","username=?",new String[]{"czl"});
查询数据
Cursor cursor=sqLiteDatabase.query("user",new String[]{"id","username","age"},"username=?",new String[]{"wcl"},null,null,null);while(cursor.moveToNext()){String id=cursor.getString(cursor.getColumnIndex("id"));String username=cursor.getString(cursor.getColumnIndex("username"));Log.i("Tomast",id+username);}
完整代码
package com.c201801080119.day_4;import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.ShareActionProvider;import android.content.ContentValues;
import android.content.SharedPreferences;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Toast;public class MainActivity extends AppCompatActivity {private Demo demo;private SQLiteDatabase sqLiteDatabase;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);demo=new Demo(MainActivity.this,"user.db",null,1);sqLiteDatabase=demo.getWritableDatabase();}public void click(View view) {switch (view.getId()){case R.id.button:ContentValues contentValues=new ContentValues();contentValues.put("username","cs");contentValues.put("password","123456");contentValues.put("age",21);sqLiteDatabase.insert("user",null,contentValues);break;case R.id.button2:ContentValues contentValues1=new ContentValues();contentValues1.put("username","css");sqLiteDatabase.update("user",contentValues1,"username=?",new String[]{"cs"});break;case R.id.button3:sqLiteDatabase.delete("user","username=?",new String[]{"czl"});break;case R.id.button4:Cursor cursor=sqLiteDatabase.query("user",new String[]{"id","username","age"},"username=?",new String[]{"wcl"},null,null,null);while(cursor.moveToNext()){String id=cursor.getString(cursor.getColumnIndex("id"));String username=cursor.getString(cursor.getColumnIndex("username"));Log.i("Tomast",id+username);}break;case R.id.button5:break;}}
}
SharedPreferences的使用与Sqlite的使用相关推荐
- OkHttp实现多线程断点续传下载,单例模式下多任务下载管理器,一起抛掉sp,sqlite的辅助吧
丨版权说明 :<OkHttp实现多线程断点续传下载,单例模式下多任务下载管理器,一起抛掉sp,sqlite的辅助吧>于当前CSDN博客和乘月网属同一原创,转载请说明出处,谢谢. 最近项目需 ...
- 腾讯开源基于 mmap 的高性能 key-value 组件 MMKV
腾讯微信团队宣布开源 MMKV ,这是基于 mmap 内存映射的 key-value 组件,底层序列化/反序列化使用 protobuf 实现,主打高性能和稳定性.MMKV 从 2015 年中至今,在 ...
- 腾讯开源项目盘点:WeUI,WePY,Tinker,Mars等
开源展示了人类共同协作,成果分享的魅力,每一次技术发展都是站在巨人的肩膀上,技术诸多创新和发展往往就是基于开源发展起来的,没有任何一家网络公司可以不使用开源技术,仅靠自身技术而发展起来. 腾讯开源了个 ...
- android mmkv使用_MMKV解读
一.首先看一下介绍(mmkv官方介绍) MMKV--基于 mmap 的高性能通用 key-value 组件 MMKV 是基于 mmap 内存映射的 key-value 组件,底层序列化/反序列化使用 ...
- 【转载】安卓APP架构
注:本篇博文转载于 http://my.oschina.net/mengshuai/blog/541314?fromerr=z8tDxWUH 本文介绍了文章作者从事了几年android应用的开发,经 ...
- 从Zygote孵化frameworks进程,分析StartActivity流程中intent传递数据的最大值。
Pangu-Immortal (Pangu-Immortal) · GitHub 当我们用Intent传输大数据时,有可能会出现错误: val intent = Intent(this@MainAct ...
- 第一篇|腾讯开源项目盘点:WeUI,WePY,Tinker,Mars等
开源展示了人类共同协作,成果分享的魅力,每一次技术发展都是站在巨人的肩膀上,技术诸多创新和发展往往就是基于开源发展起来的,没有任何一家网络公司可以不使用开源技术,仅靠自身技术而发展起来. 腾讯开源了个 ...
- Android之面试题精选,自己收藏下
1.android dvm 的进程和Linux的进程,应用程序的进程是否为同一个概念: 答:dvm是dalivk虚拟机.每一个android应用程序都在自己的进程中运行,都拥有一个dalivk虚拟机实 ...
- android面试题精选
1.android dvm 的进程和Linux的进程,应用程序的进程是否为同一个概念: 答:dvm是dalivk虚拟机.每一个android应用程序都在自己的进程中运行,都拥有一个dalivk虚拟机实 ...
最新文章
- C#如何打开一个窗体,同时关闭该窗体
- 自己动手搭建DNS服务器
- 前端构建工具之争——Webpack vs Gulp 谁会被拍死在沙滩上
- 【大局观很关键】关于找程序的bug
- linux环境下中文乱码问题
- POJ - 1236 Network of Schools(强连通缩点)
- 20190408 Java中的Double类型计算
- oracle 查询所有组合,Oracle的组合条件查询
- python怎么测试程序_python如何测试程序
- cuid卡写入后锁死_CUID卡,CUID白卡,CUID门禁卡,CUID电梯卡,CUID可改写卡
- linux配置libpng环境变量_不同操作系统下 jdk 的配置
- 【caffe】基于CNN的年龄和性别检测
- VPP buffer不足
- SAP培训及ABAP学习入门必读
- 15-基于51单片机的篮球计时器
- Java pdf图书下载网站整理
- nginx配置详细说明
- 淘宝/天猫采集商家信息插件
- 【Python】列表生成式应用的八重境界
- 单像后方交会、pnp问题迭代计算的数学原理