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 轻量 无需配置的 本地化

创建数组库的步骤

  1. 借用Class,DBHelper 继承SQLiteOpenHelper
  2. 实现两个抽象方法 onCreate() onUpgrade() 创建一个带参的构造方法
  3. 在构造方法中 创建数据库
  4. 在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();
    }
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

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", "删除成功");
    }
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

数据库操作的分类

  • 增删改分为一类,返回的是受影响的行数
  • 而查询返回的是他查询到的结果集。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值