Android中SharedPreferences和数据库SQLite的使用

SharedPreferences

SharedPreferences获取方式有几种 区别是是什么?

两种:
1.getSharedPreferences(参数1, 参数2)参数一代表 文件名称 参数二代表模式 模式默认MODE_PRIVATE;
2.getPreferences(参数1) 参数一代表模式 模式默认MODE_PRIVATE,
区别
首先从调用层次上来分:
1.getPreferences(int mode)是由Activity来调用的。
2.getSharedPreferences(String name,int mode)由Context调用。

从文件命名来说:
1.getPreferences(int mode)不需要传递文件名,默认使用不带包名的类名作为文件名(即Activity java文件名,不带后缀)。
2.getSharedPreferences(String name,int mode)需要提供文件名,当然是以提供的name作为文件名

SharedPreferences有几种操作?

两种:分别是读取和写入

public class MainActivity3 extends AppCompatActivity {
/**
 * SharedPreferences 数据读取和写入
 */
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main3);
        //写入的数据 定义为String 后期好调用
        String user="root";
        String pwd="123456";
        //SharedPreferences 数据写入
        //1.1获取SharedPreferences 用getSharedPreferences方法 而不是new一个对象
        SharedPreferences sp=getSharedPreferences("login",MODE_PRIVATE);
			//2.借助Editor,向SharedPreferences中写入数据
        SharedPreferences.Editor editor=sp.edit();
   	 	//    3.写入数据 只能写原始数据(boolean,float,int,long,string) 不能用复合类型
        editor.putString("user",user);
        editor.putString("pwd",pwd);
			//        提交数据 可通过键值对取值
        editor.commit();


			//      SharedPreferences 数据读取
			//1.1获取SharedPreferences 用getSharedPreferences方法 而不是new一个对象
      SharedPreferences sp=getSharedPreferences("login",MODE_PRIVATE);
			//获取数据 通过键值对
      String  sp_user=sp.getString("user",user);
      String  sp_pwd=sp.getString("pwd",pwd);
      //Toast弹窗
       Toast.makeText(this, "账号:"+sp_user+"密码:"+sp_pwd, Toast.LENGTH_SHORT).show();
    }
}

SQLite

优点:SQLite是Android内置的一个小型、关系型、属于文本型的数据库,通常只需要几百K的内存就足够了。SQLite不仅支持标准的SQL语法,还遵循了数据库的ACID事务 轻量 无需配置的 本地化

SQLite的使用:

借用Class,DBHelper 继承SQLiteOpenHelper需要重写 以下两个方法:
实现两个方法

onCreate 创建数据库
onUpgrade 更新数据库
上代码:

//创建一个class文件 DBHelper 继承 SQLiteOpenHelper
public class DBHelper extends SQLiteOpenHelper {
    public DBHelper(@Nullable Context context) {
        super(context,"info.db",null,1);
    }
//在onCreate() 方法中,创建表和插入数据
    @Override
    public void onCreate(SQLiteDatabase db) {
        //创建表
        //里面有三个属性 id user pwd 这里的values
        db.execSQL("create table username(id int PRIMARY KEY,user text,pwd text)");
//     向表中加入数据
        //1.使用sql语句插入
        db.execSQL("INSERT INTO username VALUES(1,'root','000')");
        //2.用sqlite特有方法插入(不推荐)
//        ContentValues cv=new ContentValues();
//        cv.put("id",2);
//        cv.put("user","张三");
//        cv.put("pwd","123456");
//        db.insert("username",null,cv);
    }
    
//onUpgrade  更新数据库
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }
}

使用DBHelper执行增删改查流程

1.执行查询语句流程

  1. 获取数据库对象
  2. 执行查询 将结果集放入游标内
  3. 取出结果
  4. 释放资源
    上代码:
public class MainActivity5 extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main5);
        //引入DBHelper
        DBHelper dbHelper=new DBHelper(MainActivity5.this);
        // 做一个查询功能,将数据库中 userinfo表中数据全部查出
        String sql="select * from username";
//        1.获取数据库对象
        SQLiteDatabase db=dbHelper.getWritableDatabase();
//        2.执行语句, 得到结果集,把结果集放到游标内
            Cursor cursor = db.rawQuery(sql,null);
//        3.取出结果(使用实体类)
//我这里用的是使用实体类 获取结果
            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);
            }
//           4.释放资源
            cursor.close();
            dbHelper.close();
            //输出
            //可以从控制台看到获取的内容
        for (Userinfo userinfo:list) {
            Log.i("从数据库获取的值:", "id为:"+userinfo.getId()+"账号为:"+userinfo.getUser()+"密码为:"+userinfo.getPwd());
        }
    }
}




//实体类
public class Userinfo {
    private int id;
    private String user;
    private String pwd;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getUser() {
        return user;
    }

    public void setUser(String user) {
        this.user = user;
    }

    public String getPwd() {
        return pwd;
    }

    public void setPwd(String pwd) {
        this.pwd = pwd;
    }
}


运行结果:
结果

2.执行 增、删、改的流程

  1. 获取数据库对象
  2. 执行动作
  3. 释放资源
    执行增、删、改操作都是一样的 这里就介绍删除操作了
    上代码:
/**
*更新操作
*/
public class MainActivity7 extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main7);

 			//引入DBHelper
        DBHelper dbHelper=new DBHelper(MainActivity7.this);
        //获取数据库对象
        SQLiteDatabase db=dbHelper.getWritableDatabase();
        //执行SQL语句
        String sql="delete from username WHERE id=?";
        db.execSQL(sql,new String[]{"2"});
        //释放资源
        dbHelper.close();
        //这里用的是把效果弹到页面上 
        Toast.makeText(MainActivity7.this,"删除成功",Toast.LENGTH_SHORT).show();
    }
}

结果咱们这页面没什么东西
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值