文件存儲
寫數據
String data = "Data ti save";
FileOutputStream out =null;
BufferedWriter writer =null;
try{
out = openFileOutput("data",Context.MODE_PRIVATE)//MODE_APPEND有同名文件時追加,PRIVATE是默認,有同名文件時覆蓋
writer = new BufferedWriter(new OutpurStreamWriter(out));
writer.writer(data);
}
catch(IOexception e)
{
e.printStackTrace();
}
finally
{
try{
if(writer!=null)
{
writer.close();
}
catch(IOException e)
{
e.printStackTrace();
}
}
}
- 在右側的Device File Explorer 查看存儲的文件
- 存放路徑/data/data/com..../files/
讀數據
P201
SharedPreferences存儲
- 存放路徑 /data/data/com.../shared_prefs
一、Context類中的getSharedPreferences()方法
getSharedPreferences("file_name","MODE_PRIVATE")//第二個參數只有一種
二、Activity類中的getPreferences(MODE_PRIVATE)//文件名默認我活動類名
三、PreferenceManager類中的getDefaultSharedPreferences()方法
具體方法
寫
SharePreferences.Editor editor = getSharedPreferences("data",MODE_PRIVATE).edit();
editor.putString("name","Tom");
editor.putInt("age",28);
editor.apply();//提交
讀
ShareOreferences pref = getSharedPreferences("data",MODE_PRIVATE);
String name=pref.getString("name","")//若找不到值 就用方法傳進來的值代替
SQLite數據庫
-
存儲位置 /data/data/com.example.administrator.myapplication/databases
-
SQLiteOpenHelper 兩個實例方法
-
getReadableDatabase()//都可以對可讀寫的數據庫進行讀寫
-
getWriteableDatabase()//不可寫入的時候 使用此方法報錯
構造方法
SQLiteOpwnHelper(Context,"database_name",null,"1"//database_version);//當最后一個參數大於上一個版本時 會執行onUpgrade方法
package com.example.administrator.myapplication;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.widget.Toast;
public class MyDatabaseHelper extends SQLiteOpenHelper {
public static final String CREATE_BOOK=
"create table Book(" +
"id integer primary key autoincrement," +
"author text," +
"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 sqLiteDatabase) {
sqLiteDatabase.execSQL(CREATE_BOOK);//執行建表語句
Toast.makeText(mContext,"yes",Toast.LENGTH_LONG).show();
}
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
db.execSQL("drop table if exists Book");
db.execSQL("drop table if exists Category");
onCreate(db);//升級數據庫
}
}
更新
SQLiteDatabase db = SQLiteOpenHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("key","value");
db.insert("table_name",null,values);//插入
db.update("table_name",values,"name=?",new String[] {"The Da "}) //?是個占位符,The Da 會替換? 意思就是更新 名為 The Da 的內容
db.delete("table_name","pages>?",new String[] {"500"})//刪除大於500行的數據
values,clear();
adb shell
- sqlite3 databasename.db
- .table 查看有哪些表
- .schema 建表語句
查詢
使用query()方法七個參數
SQLiteDatabase db = SQLiteOpenHelper.getWritableDatabase();
Cursor cursor = db.query("Bool",null,null,null,null,null,null,null);
if(cursor.moveToFirst())
{
do{
String name=cursor.getString(cursor.getColumnIndex("name"));
}while(cursor.moveToNext());
}
cursor.close();
使用sql方式
db.execSQL("insert into Book (name,author,pages,price) values(?,?,?,?),new String[] {"sfs","sfsf",“23.5”,”454"}");
db.rawQuery("select * from Book",null);