SQLite&&SharedPreferences&&IO讀寫Sdcard學習筆記

來源:互聯網
上載者:User

標籤:

SQLite

輕量級的、嵌入式的、關係型資料庫

Android、IOS等廣泛使用的的資料庫系統

SQLite資料庫之中可以方便的使用SQL語句,實現資料的增加、修改、刪除、查詢等操作

SQLiteOpenHelper:負責建立、開啟、更新、關閉資料庫和建立資料表

SQLiteDataBase:執行SQL語句、對資料表的增刪改查

隱藏檔名,資料將儲存在/data/data/程式的包名稱/databases/xxxx.db中

使用SQLiteDataBase儲存資料
  1. 1.    開啟或建立test.db資料庫 

SQLiteDatabase db = openOrCreateDatabase("test.db", Context.MODE_PRIVATE, null); 

db.execSQL("DROP TABLE IF EXISTS person"); 

  1. 2.    建立表  person

db.execSQL("CREATE TABLE person (_id INTEGER PRIMARY KEY AUTOINCREMENT, _name VARCHAR, _age SMALLINT)"); 

  1. 3.    插入資料 

//方法【一】

db.execSQL("INSERT INTO person VALUES (NULL, ?, ?)", new Object[]{"mar", 1}); 

//方法【二】ContentValues以索引值對的形式存放資料 

ContentValues cv = new ContentValues(); 

cv.put("_name","joy"); 

cv.put("_age", 2); 

db.insert("person", null, cv);  //插入ContentValues中的資料 

  1. 4.    修改資料 【索引值對的方式】

cv = new ContentValues(); 

cv.put("_age", 35); 

db.update("person", cv, "name = ?", new String[]{"joy"}); 

  1. 5.    查詢資料

//方法【一】 rawQuery

Cursor c = db.rawQuery("SELECT * FROM person WHERE age >= ?", new String[]{"33"}); 

//方法【二】執行query方法

Cursor c=db.query("users", new String[]{"_id","_name","_pwd"},

              "_name=?",new String[]{"user01"},null,null,null);

while (c.moveToNext()) { 

      int id = c.getInt(c.getColumnIndex("_id")); 

      String name = c.getString(c.getColumnIndex("_name")); 

      int age = c.getInt(c.getColumnIndex("_age")); 

      Log.d("db", "_id=>" + id + ", name=>" + name + ", age=>" + age); 

c.close();//關閉結果集

  1. 6.    刪除資料 

db.delete("person", "age < ?", new String[]{"35"});//

db.delete("Test","WHERE _id="+0,null);

db.execSQL("delete from 表名 where 條件");

 

  1. 7.    關閉當前資料庫 

db.close(); 

  1. 8.    刪除資料庫  test.db

deleteDatabase("test.db");

SharedPreferences

一種輕量級的資料保持方式,以索引值對的方式將資料存入的xml檔案中,通過key從檔案中取出資料

擷取SharedPreferences的兩種方式:
  1. 調用Context對象的getSharedPreferences()方法
  2. 調用Activity對象的getPreferences()方法

兩種方式的區別:

  • 調用Context對象的getSharedPreferences()方法獲得的SharedPreferences對象可以被同一應用程式下的其他組件共用.
  • 調用Activity對象的getPreferences()方法獲得的SharedPreferences對象只能在該Activity中使用.

SharedPreferences sp=super.getSharedPreferences("app_param", Context.MODE_PRIVATE);

隱藏檔名,資料將儲存在/data/data/base package/shared_prefs/app_param.xml中

定義檔案的操作模式
  1. 當前應用操作:              Context.MODE_PRIVATE

為預設操作模式,代表該檔案是私人資料,只能被應用本身訪問,在該模式下,寫入的內容會覆蓋原檔案的內容

  1. 當前應用操作,追加模式:Context.MODE_APPEND

模式會檢查檔案是否存在,存在就往檔案追加內容,否則就建立新檔案.

  1. 能被其他應用讀:           Context.MODE_WORLD_READABLE
  2. 能被其他應用寫:           Context.MODE_WORLD_WRITEABLE

 

讀寫SD卡

使用SharedPreferences可以方便的完成資料的儲存功能,但是其只能儲存一些很簡單的資料,如果想儲存更多類型的資料,則可以使用檔案的儲存操作

實現步驟:
  1. 1.    加入讀寫SD卡許可權

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

  1. 2.    判斷SD卡是否存在【無論是讀還是寫,都要判斷】

Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED

  1. 3.    讀寫檔案

  存入資料---putXXX(key,value)

SharedPreferences sp=super.getSharedPreferences("app_param", Context.MODE_PRIVATE);

SharedPreferences.Editor editor=sp.edit();

editor.putString("use","tom");

editor.putInt("age", 1); //預設值 1

editor.commit();

  取出資料----getXXX(key,default)

SharedPreferences sp=super.getSharedPreferences("app_param", Context.MODE_PRIVATE);

sp.getInt("use",0);//預設值 0

 

IO操作實現Sdcard存取操作存資料

private int save(String fileName,NewsItem item){

       Log.d("io","save()");

       int ret=0;

       //Environment.getExternalStorageDirectory()拿目錄  Environment.MEDIA_MOUNTED已載入

       if (!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {

           return -1;

       }

       ObjectOutputStream oos=null;

       //super.getFilesDir();//系統路徑

       String filePath=Environment.getExternalStorageDirectory().toString()

              +File.separator+fileName;//File.separator路徑

       File file=new File(filePath);//建立檔案,用於判斷檔案是否存在

       File parentFile=file.getParentFile();

       if (!parentFile.exists()) {//父資料夾不存在

           parentFile.mkdir();//建立檔案所在目錄

       }

       try {

           oos=new ObjectOutputStream(new BufferedOutputStream(new FileOutputStream(file)));

           oos.writeObject(item);

           ret=1;

       } catch (FileNotFoundException e) {

           e.printStackTrace();

       } catch (IOException e) {

           e.printStackTrace();

       }finally{

           try {

              oos.flush();

              if (oos!=null)oos.close();

           } catch (IOException e) {

              e.printStackTrace();

           }

       }

       return ret;

    }

取資料

private NewsItem read(String fileName){

       Log.d("io","read()");

       NewsItem item=null;      if(!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){//如果sdcard存在

           return null;

       }

      

       String filePath=Environment.getExternalStorageDirectory().toString()

              +File.separator+fileName;//File.separator路徑

       File file=new File(filePath);

       if (!file.exists()) {

           return null;

       }

       ObjectInputStream ois=null;

       try {

           ois=new ObjectInputStream(new BufferedInputStream(new FileInputStream(file)));

           item=(NewsItem)ois.readObject();

       } catch (StreamCorruptedException e) {

           e.printStackTrace();

       } catch (FileNotFoundException e) {

           e.printStackTrace();

       } catch (IOException e) {

           e.printStackTrace();

       } catch (ClassNotFoundException e) {

           e.printStackTrace();

       }finally{

           try {

              ois.close();

           } catch (IOException e) {

              e.printStackTrace();

           }

       }

       return item; 

    }

SQLite&&SharedPreferences&&IO讀寫Sdcard學習筆記

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.