Android學習筆記(5)
資料儲存
標籤: Android
檔案儲存
openFileOutput方法
此方法將資料儲存到指定的檔案中,2個引數
第一個是檔名,不可以包含路徑,第二個是操作模式,如Context.MODE_PRIVATE和Context.MODE_APEND
通過Java流的方式將資料寫入檔案中
public void save(String inputText) {
FileOutputStream out = null;
BufferedWriter writer = null;
try {
out = openFileOutput("data", Context.MODE_PRIVATE);
writer = new BufferedWriter(new OutputStreamWriter(out));
writer.write(inputText);
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (writer != null) {
writer.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
從檔案中讀取資料
public String load() {
FileInputStream in = null;
BufferedReader reader = null;
StringBuilder content = new StringBuilder();
try {
in = openFileInput("data");
reader = new BufferedReader(new InputStreamReader(in));
String line = "";
while ((line = reader.readLine()) != null) {
content.append(line);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return content.toString();
}
SharedPreference
將資料儲存到SharedPreferences中
3種方法獲取SharedPreferences物件
- Context類的getSharedPreferences()方法
- Activity類的getPreferences()方法
- PreferenceManager類的getDefaultSharedPreferences()方法
通過SharedPreferences物件儲存資料
SharedPreferences.Editor editor = new getSharedPreferences("data",Context.MODE_PRIVATE).edit();
editor.putString/putBoolean...方法新增資料
editor.apply()提交資料完成資料儲存
從SharedPreferences物件讀取資料
SharedPreferences pref = getSharedPreferences("data", MODE_PRIVATE);
String name = pref.getString("name", "");
int age = pref.getInt("age", 0);
boolean married = pref.getBoolean("married", false);
有預設值作為當沒有值的值 有一個記住密碼的小功能可以學習下: 判斷是否已經複選了,是則通過SharedPreferences物件取出資料,否則在按鈕的監聽事件中處理資料,判斷是否需要儲存資料
SQLite資料庫
通過SQLiteOpenHelper抽象類繼承
建立資料庫
重寫onCreate方法建立資料庫和表
public class MyDatabaseHelper extends SQLiteOpenHelper {
public static final String CREATE_BOOK = "create table Book ("
+ "id integer primary key autoincrement, "
+ "author text, "
+ "price real, "
+ "pages integer, "
+ "name text)";
private Context mContext;
public MyDatabaseHelper(Context context, String name,
SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
mContext = context;
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_BOOK);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
MyDatabaseHelper dbHelper;
dbHelper = new MyDatabaseHelper(this, "BookStore.db", null, 1);
...
dbHelper.getWritableDatabase();//建立資料庫和表
...
當需要更新資料庫時,onUpgrade裡更改如下,並更改版本為2
db.execSQL("drop table if exists Book");
db.execSQL("drop table if exists Category");
新增資料
通過ContentValues物件新增資料
SQLiteDataBase db = dbHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("name", "accfcx");//第一條記錄資料
...
db.insert("Book",null,values);
values.clear();
...//第二條...
更新資料
仍然通過ContentValues物件,不過只是給需要更改的列新增資料,呼叫
db.update("Book", values, "name = ?", new String[]{"accfcx"});
刪除資料
db.delete("Book", "name = ?", new String[]{"accfcx"});
查詢資料
Cursor cursor = db.query("Book", null, null, null, null, null, null);
if (cursor.moveToFirst()) {
do {
// 遍歷Cursor物件,取出資料並列印
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"));
} while (cursor.moveToNext());
}
cursor.close();
LitePay開源庫運算元據庫
配置LitePal
在app/build.gradle中新增庫依賴
compile 'com.android.support:appcompat-v7:24.2.1'
在main目錄下新建assets目錄,新建litepal.xml檔案
<?xml version="1.0" encoding="utf-8"?> <litepal> <dbname value="BookStore" ></dbname>
</litepal><version value="2" ></version> <list> <mapping class="com.example.litepaltest.Book"></mapping> <mapping class="com.example.litepaltest.Category"></mapping> </list>
配置AnroidManifest.xml
<application android:name="org.litepal.LitePalApplication" ...
建立和升級資料庫
LitePal採用ORM方式,需要Java bean實體類作為資料庫表的對映,新建實體類,再listpal.xml中新增Book到對映模型列表中
Connector.getDatabase();
資料庫建立完畢
新增資料
前面使用ContentValues,而LitePal通過給Java Bean繼承DataSupport
public class Book extends DataSupport{
...
}
給Book表新增資料
Book book = new Book();
book.setName("The Da Vinci Code");
...
book.save();
更新資料
Book book = new Book();
book.setPrice(14.95);
book.setPress("Anchor");
book.updateAll("name = ? and author = ?", "The Lost Symbol", "Dan Brown");
刪除資料
DataSupport.deleteAll(Book.class, "price < ?", "15");
查詢資料
List<Book> books = DataSupport.findAll(Book.class);
相關文章
- Vue學習筆記5Vue筆記
- git學習筆記5Git筆記
- CCNA學習筆記5筆記
- Android 學習筆記雜記Android筆記
- 強化學習-學習筆記5 | AlphaGo強化學習筆記Go
- Android學習筆記·ANRAndroid筆記
- Android學習筆記·HandlerAndroid筆記
- Android SQLite學習筆記AndroidSQLite筆記
- Android學習筆記一Android筆記
- Android學習筆記(6)Android筆記
- Android學習筆記(3)Android筆記
- Android學習筆記(4)Android筆記
- Android學習筆記(2)Android筆記
- Android學習筆記(1)Android筆記
- Android學習筆記(8)Android筆記
- Android學習筆記(7)Android筆記
- Android GC 學習筆記AndroidGC筆記
- android學習筆記--ScannerAndroid筆記
- android學習筆記--AlarmManagerAndroid筆記
- android學習筆記二Android筆記
- android學習筆記三Android筆記
- Android學習筆記四Android筆記
- android學習筆記五Android筆記
- android學習筆記六Android筆記
- Android OpenGL 學習筆記Android筆記
- HTML5學習筆記HTML筆記
- PL/SQL學習筆記-5SQL筆記
- ruby字串學習筆記5字串筆記
- [學習筆記 #5] 雜湊筆記
- Android Linker學習筆記Android筆記
- Android學習筆記·ADBAndroid筆記
- Android 學習筆記思考篇Android筆記
- Android 學習筆記核心篇Android筆記
- Android學習筆記(五)——FragmentAndroid筆記Fragment
- Android學習筆記之IntentAndroid筆記Intent
- Android 開發學習筆記Android筆記
- Android Studio學習筆記Android筆記
- G01學習筆記-5筆記