androidデータストレージ


Androidのデータストレージは大きく3つに分けることができ、1つ目はファイルストリームを通過する方法である.2つ目はSharedPreferences、3つ目はandroidを使用して提供されるSQLiteです.全体的に見ると、最初の2つは小型データの読み取りと修正に適しており、第3の方法ではSQLiteは実際にはデータベースであり、構築テーブルやクエリー文などを書くことで多くのデータを処理することができます.
第一の方法
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
	}
}