• 数据存储


    Android 基础开发 数据存储

    数据存储是什么

    数据保存到App本身是本节课的内容

    存储数据的方式 有哪些

    • SP
    • SQLite数据库
    • Room数据库

    数据存储的选择

    • 配置信息 保存的sp(记住密码,看书到 69页)
    • 列表数据 保存到数据库 Room 数据库简洁 SQLite 原生(联系人,短信)

    SP 学习

    SP特点

    sharedpreference 首选项

    • 存储软件的配置信息
      • 自动登录 主题记录
      • 不能存太多数据 很小很简单的选项可以存
        • 当程序运行首选项里面的数据会全部加载,会卡顿
      • android xml
      • windows ini

    SP简单使用

    • sp保存

      • // 参数1:Sp名字
        // 参数2:Sp保存的模式: 追加(每次保存都会追加),常规(每次保存都会更新)key  : value
        SharePreferences sp = getSharedPreference(“SPname”,Context.MODE_PRIVATE);
        sp.edit().putString("derrKey","九阳神功").apply();//apply 才会写道xml配置文件里面去
        
    • sp获取

      • SharePreferences sp = getSharedPreference(“SPname”,Context.MODE_PRIVATE);
        String  value = sp.getString("derryKey","默认值");//假设derrykey获取是空的,去拿默认值的value
        Toast.makeText(this,""+value,Toast.LENGTH_SHORT).show();
        

    SP真实实战

    实现 自动登录 和 记住密码

    SQLite学习

    SQLite介绍

    关系型数据库

    嵌入性设备 ,体积小,功能强大,嵌入性数据库,几十kb

    iso:Sqlite数据库

    android 里面的数据库是由底层的sqilt.c的代码来动态生成的

    Mysql用户手动创建

    sqilt.c 代码动态创建

    SQLite增删改查

    android 封装了一个类 SqliteOpenHelper 工具类,完成数据库的增删改查。是一个抽象类,我们必须继承它去实现。

    public class Main3Activity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main3);
        }
        /*
         * 生成DB文件
         * */
        public void creatDB(View view) {
    
            SQLiteOpenHelper helper = MySqliteOpenHelper.getmInstance(this);
    
            //(helper.getReadableDatabase())
            // helper.getWriteableDatabase()
            // database创建靠这句话
            SQLiteDatabase readableDatabase = helper.getReadableDatabase();
        }
    
        public void query(View view) {
            SQLiteOpenHelper helper = MySqliteOpenHelper.getmInstance(this);
            SQLiteDatabase db = helper.getReadableDatabase();
    
            if(db.isOpen()){//数据库打开成功  返回true
                //返回 游标
                Cursor cursor = db.rawQuery("select * from persons", null);
    
                //迭代游标  遍历数据 游标下移
                while (cursor.moveToNext()){
                    //偷懒的写完
                    //int _id = cursor.getInt(0);
                    //String name = cursor.getString(1);
                    // 标准写法
                    int _id = cursor.getInt(cursor.getColumnIndex("_id"));
                    String name = cursor.getString(cursor.getColumnIndex("name"));
    
                    Log.d("derry","query:_id:" + _id + "name" + name);
    
                }
                //一定记得关闭游标 否则 耗费性能
                cursor.close();
                db.close();
    
    
            }
        }
        /*
        插入到数据库
        * */
        public void insert(View view) {
            SQLiteOpenHelper helper = MySqliteOpenHelper.getmInstance(this);
            SQLiteDatabase db = helper.getWritableDatabase();
    
            //确保数据款打开,才能放心操作,规范
            if(db.isOpen()) {
                //插入语句
                String sql = "insert into persons(name) values('Derry老师')";
                db.execSQL(sql);
            }
            // 规范 : 必须关闭
            db.close();
        }
    
        /*
         * 修改 第五条数据
         * */
        public void update(View view) {
            SQLiteOpenHelper helper = MySqliteOpenHelper.getmInstance(this);
            SQLiteDatabase db = helper.getWritableDatabase();
    
            //确保数据款打开,才能放心操作,规范
            if(db.isOpen()) {
                //修改语句
                String sql = "update  persons set name =? where _id =?";
                db.execSQL(sql,new Object[]{"李连杰",5});
            }
            // 规范 : 必须关闭
            db.close();
    
        }
    
        public void delete(View view) {
            SQLiteOpenHelper helper = MySqliteOpenHelper.getmInstance(this);
            SQLiteDatabase db = helper.getWritableDatabase();
    
            //确保数据款打开,才能放心操作,规范
            if(db.isOpen()) {
                //修改语句
                String sql = "delete from  persons where _id =?";
                db.execSQL(sql, new Object[]{4});
            }
            // 规范 : 必须关闭
            db.close();
    
        }
    }
    
    

    Room

    SQlite 数据款的抽象

    流程医用的访问数据库

    你只要写一个类,这个类完成注解,就是一张表

    Room 三角色介绍

    Student(Entity)

    Student(DAO)

    studentDatabase(DB)

    以往: SQLIte 帮助类 , 执行SQL语句 创建表 繁琐

    ROOM(SQlite封装)

    @Entity

    class Student{}

    @Dao

    class StudentDao{}

    @Database(数据库名字,版本号)

    class StudnetDb{}

  • 相关阅读:
    根据SVG Arc求出其开始角、摆动角和椭圆圆心
    如何做好数字乡村项目
    Nginx部署Vue项目动态路由刷新404
    设计模式 建造者模式
    设计模式 抽象工厂模式
    设计模式 单例模式
    Q&A:「微搭低代码」计费相关问题
    云托管已支持一键搭建服务商开发环境
    Q&A:「微搭低代码」数据源相关问题
    腾讯云微搭x腾讯文档,企业协同研发更便捷
  • 原文地址:https://www.cnblogs.com/AronJudge/p/14652566.html
Copyright © 2020-2023  润新知