androidデータストレージ
Androidのデータストレージは大きく3つに分けることができ、1つ目はファイルストリームを通過する方法である.2つ目はSharedPreferences、3つ目はandroidを使用して提供されるSQLiteです.全体的に見ると、最初の2つは小型データの読み取りと修正に適しており、第3の方法ではSQLiteは実際にはデータベースであり、構築テーブルやクエリー文などを書くことで多くのデータを処理することができます.
第一の方法
AndroidManifestでxmlファイルにファイルの読み書き権限を追加します.
具体的なコードは次のとおりです.
第2の方法SharedPreferences
第3の方法SQLiteは、まずdataAadatperクラスをカプセル化します.
メインプログラムで関連する操作関数を呼び出し、データを取得して解析します.
第一の方法
AndroidManifestでxmlファイルにファイルの読み書き権限を追加します.
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
具体的なコードは次のとおりです.
private void readFromSD() {
FileInputStream input;
try {
// set the path to the file in the SD card
input = new FileInputStream("/sdcard/lyricInSD");
BufferedReader reader = new BufferedReader(new InputStreamReader(
input));
String string = "";
String line = null;
while ((line = reader.readLine()) != null) {
string = string + line + "
";
}
input.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private void saveToSD() {
String string = "the string save to SD card";
FileOutputStream output;
try {
// set the file path to the SD card
output = new FileOutputStream("/sdcard/lyricInSD");
output.write(string.getBytes());
output.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
第2の方法SharedPreferences
private void savesharedPreferences() {
SharedPreferences preferences = getSharedPreferences("dataText", Context.MODE_WORLD_READABLE);
Editor tempEditor = preferences.edit();
tempEditor.putString("name", "the name to save");
tempEditor.putString("age", "the age to save");
tempEditor.putString("height", "the height to save");
tempEditor.commit();
}
private void loadsharedPreferences() {
SharedPreferences preferences = getSharedPreferences("dataText", Context.MODE_PRIVATE);
String nameString = preferences.getString("name", "Default value");
String ageString = preferences.getString("age", "Default value");
String heightString = preferences.getString("height", "Default value");
}
第3の方法SQLiteは、まずdataAadatperクラスをカプセル化します.
public class dataAdatper {
public static final String KEY_NAME = "name";
public static final String KEY_INTRO = "intro";
public static final String KEY_ID = "id";
// , id , ,
private static final String DATABASE_CREATE = "create table member (id integer primary key autoincrement, "
+ "name text, intro text);";
private static final String DATABASE_NAME = "memberDB";
private static final String DATABASE_TABLE = "member";
private static final int DATABASE_VERSION = 2;
private final Context mCtx;
private DatabaseHelper mDbHelper;
private SQLiteDatabase mDb;
private static class DatabaseHelper extends SQLiteOpenHelper {
/* */
DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
/* */
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(DATABASE_CREATE);
}
/* */
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS notes");
onCreate(db);
}
}
/**
* - context
* */
public dataAdatper(Context ctx) {
this.mCtx = ctx;
}
/**
* ,
* */
public dataAdatper open() throws SQLException {
mDbHelper = new DatabaseHelper(mCtx);
mDb = mDbHelper.getWritableDatabase();
return this;
}
/**
*
* */
public void close() {
mDbHelper.close();
}
/**
* , id
* */
public int createRecord(String name, String intro) {
ContentValues cv = new ContentValues();
cv.put(KEY_NAME, name);
cv.put(KEY_INTRO, intro);
return mDb.insert(DATABASE_TABLE, null, cv);
}
/**
*
* */
public boolean deleteRecord(int ID) {
return mDb.delete(DATABASE_TABLE, KEY_ID + "=" + ID, null) > 0;
}
/**
* Cursor
* */
public Cursor fetchAllRecords() {
Cursor cursor = mDb.query(DATABASE_TABLE, new String[] { KEY_ID,
KEY_NAME, KEY_INTRO }, null, null, null, null, null);
if (cursor.getCount() > 0)
cursor.moveToFirst();
return cursor;
}
/**
* ID
* */
public Cursor fetchRecord(long ID) throws SQLException {
Cursor cursor = mDb.query(true, DATABASE_TABLE, new String[] { KEY_ID,
KEY_NAME, KEY_INTRO }, KEY_ID + "=" + ID, null, null, null,
null, null);
if (cursor.getCount() > 0)
cursor.moveToFirst();
return cursor;
}
/**
*
* */
public boolean updateRecord(long ID, String name, String intro) {
ContentValues cv = new ContentValues();
cv.put(KEY_NAME, name);
cv.put(KEY_INTRO, intro);
return mDb.update(DATABASE_TABLE, cv, KEY_ID + "=" + ID, null) > 0;
}
}
メインプログラムで関連する操作関数を呼び出し、データを取得して解析します.
private void test() {
dataAdatper sqlData = new dataAdatper(this);
sqlData.open();
// ,s1 s2
sqlData.createRecord(s1, s2);
// ,id id
sqlData.deleteRecord(id);
//
sqlData.updateRecord(id, s1, s2);
//
Cursor cursor = sqlData.fetchAllRecords();
if (cursor.getCount() > 0) {
// name , getColumnIndex
int index = cursor.getColumnIndex("name");
do {
// name
cursor.getString(index);
} while (cursor.moveToNext()); // cursor
}
}