目录
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);
}
@Override
public 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);
}
@Override
public 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的删除
@Override
protected 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", "删除成功");
}
数据库操作的分类
- 增删改分为一类,返回的是受影响的行数
- 而查询返回的是他查询到的结果集。