AndroidデータベースSD(TF)カードに作成


Androidアプリケーションがデータベースを構築する場合、デフォルトはシステム内/data/data/'アプリケーションパッケージ名'/
時々SDカードの中に建てる必要があります.
SDカードのメリット:
1システムが工場出荷時の設定などの操作を再開した後、アプリケーションを再インストールします.データは失われません.
2バックアップ、リカバリを容易にします.PCにコピーするか、AndroidデバイスのSDカードにPCからコピーすればよい.
などなど.
データベースをSDカードに簡単に移動するにはどうすればいいですか?
1初期化、SDカードパス.データベースが存在するパスを定義します.
package cn.hpc.dbdemo;

import java.io.File;

import android.os.Environment;


/**
       /sdcard/hpcDbData/
         /sdcard/hpcDbData/'  '/
*/
public class SDBHelper {
	
	public static final String DB_DIR = Environment.getExternalStorageDirectory().getPath()
			+ File.separator + "hpcDbData" + File.separator
			+ SDBHelper.class.getPackage().getName()
			;
	static {
		while(! Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
			try {
				Thread.sleep(500);
			} catch (InterruptedException e) {
				e.printStackTrace();
				break;
			}
		}
		File dbFolder = new File(DB_DIR);
		//             
		if (!dbFolder.exists()){
			dbFolder.mkdirs();
		}
	}
}

2 SQLiteOpenHelperでの使い方.
mDbNameデータベース名、フルパス付き
package cn.hpc.dbdemo;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;

public class DemoDbh extends SQLiteOpenHelper {
	public static final int VERSION = 1;
	public static final String mDbName =  SDBHelper.DB_DIR + File.separator + "demo.db";

	public DemoDbh(Context context) {
		super(context, mDbName, null, VERSION);
	}
	// ...      ,      

}

とても簡単です.
完了