zoukankan      html  css  js  c++  java
  • Android中的数据保存

    形式

    Android的数据保存分为3种形式:file, SharedPreference, Database

    文件

    主要思想就是通过Context类中提供的openFileInput和openFileOutput方法,然后利用Java的各种流来进行读写操作。具体来讲,openFileOutput()返回FileOutputStream对象,得到了对象之后就可以通过OutputStreamWriter转换为字符流,然后通过BufferWriter写入字符。注意openFileOutput有两种模式,第一种是MODE_PRIVATE模式是默认模式,如果文件已经存在就覆盖原来的文件。第二种是MODE_APPEND模式,如果已经存在就追加内容

                out = openFileOutput("data", Context.MODE_APPEND);
                writer = new BufferedWriter(new OutputStreamWriter(out));
                writer.write(inputText);

    文件默认保存在/data/data/<package name>/files目录下。如果要从该目录下读取:

                //auto check "/data/data/<package name>/files"
                in = openFileInput("data");
                reader = new BufferedReader(new InputStreamReader(in));
                String line = "";
                while ((line = reader.readLine()) != null) {
                    content.append(line);
                }

    SharedPreferences

    SharedPreferences是用键值对来保存数据的。要使用SharedPreferences首先要获得SharedPreferences对象,方法有三种 1, Context类的getSharedPreferences()方法。SharedPreferences存放在/data/data/<package name>/shared_prefs/目录下。有两种操作模式,分别是MODE_PRIVATE和MODE_MULTIPROCESS,前一个表示只有当前的程序可以对这个文件进行读写,后一个表示多个进程可以读写。 2, Activity类的getPreferences()方法。 3, PreferenceManager类中的getDefaultSharedPreferences方法。 得到SharedPreferences对象之后就可以向SharedPreferences存储数据了,分三步:

    1. 调用SharedPreferences对象的edit方法
    2. 通过putBoolean或者putString方法向SharedPreferences添加数据 或者通过getString, getInt, getBoolean等方法可以读取数据
    3. 通过commit()方法将添加的数据提交,完成数据存储的操作

    数据库

    1. 创建数据库的时候调用getReadableDatabase()或者getWritableDataBase()方法可以创建数据库,数据库文件存放在/data/data/<package name>/databases下,此时重写的onCreate()方法会得到执行。并可以通过onUpgrade()来更新数据库,比如添加新的表。接下来就可以通过CRUD操作数据库了
    2. 添加数据用insert方法,该方法有三个参数,第一个是表名,第二个是null,第三个是ContentValue对象:
                   ContentValues values = new ContentValues();
                   values.put("name", "The Da Vinci Code");
                   values.put("author", "Dan Brown");
                   values.put("pages", 454);
                   values.put("price", 16.96);
                   db.insert("Book", null, values);
    3. 更新数据更新数据用update方法
                   ContentValues values = new ContentValues();
                   values.put("price", 10.99);
                   db.update("Book", values, "name = ?",
                           new String[] { "The Da Vinci Code" });
    4. 删除数据用delete方法
       db.delete("Book", "pages > ?", new String[] { "500" });
    5. 查询数据用query方法
     SQLiteDatabase db = dbHelper.getWritableDatabase();
                 Cursor cursor = db.query("Book", null, null, null, null, null,
                         null);
                 if (cursor.moveToFirst()) {
                     do {
                         String name = cursor.getString(cursor
                                 .getColumnIndex("name"));
                         String author = cursor.getString(cursor
                                 .getColumnIndex("author"));
                         int pages = cursor.getInt(cursor
                                 .getColumnIndex("pages"));
                         double price = cursor.getDouble(cursor
                                 .getColumnIndex("price"));
                         Log.d("MainActivity", "book name is " + name);
                         Log.d("MainActivity", "book author is " + author);
                         Log.d("MainActivity", "book pages is " + pages);
                         Log.d("MainActivity", "book price is " + price);
                     } while (cursor.moveToNext());
  • 相关阅读:
    Graphics Card Notes | 烧卡日记(显卡常识笔记)
    PyCharm Notes | PyCharm 使用笔记(远程访问服务器code配置指南)
    Python Notes | Python 备忘笔记
    conda清华镜像(TUNA)使用指南
    vim 操作手册
    WebNotes(PHP、css、JavaScript等)
    Linux网络配置:设置IP地址、网关DNS、主机名
    Linux挂载:VMware tools for Linux安装
    Linux磁盘分区的理解
    什么是Python?Python的设计哲学?如何获取/升级Python?
  • 原文地址:https://www.cnblogs.com/dracohan/p/5980731.html
Copyright © 2011-2022 走看看