`
tracy061
  • 浏览: 63899 次
社区版块
存档分类
最新评论

导入外部数据库

 
阅读更多

package com.example.imputdatabase;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.os.Environment;
import android.util.Log;

public class DbManager {
    private Context context;
    private final int BUFFER_SIZE = 400000;
	public static final String DB_NAME = "legerdemian.db"; // 保存的数据库文件名
	//注意这里的PACKAGE_NAME改成你的项目的包名字,如果你不用你的包名那么下面的FileOutputStream fos = new FileOutputStream(dbfile);
	//会抛出异常,当初本人就是在这卡了好久,因为没认真看代码
	public static final String PACKAGE_NAME = "com.example.imputdatabase";
	public static final String DB_PATH = "/data"+ Environment.getDataDirectory().getAbsolutePath() + "/" + PACKAGE_NAME; // 在手机里存放数据库的位置

	public DbManager(Context context) {
		// TODO Auto-generated constructor stub
		this.context = context;
		openDatabase();
	}
	private void openDatabase() {
		// TODO Auto-generated method stub
		String path = DB_PATH+"/"+DB_NAME;
		try {
			if (!(new File(path).exists())) {// 判断数据库文件是否存在,若不存在则执行导入,否则直接打开数据库
				InputStream is = this.context.getResources().openRawResource(
						R.raw.legerdemain); // 欲导入的数据库
				FileOutputStream fos = new FileOutputStream(path);
				byte[] buffer = new byte[BUFFER_SIZE];
				int count = 0;
				while ((count = is.read(buffer)) > 0) {
					fos.write(buffer, 0, count);
				}
				fos.close();
				is.close();
			}
			SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(path,
					null);   
		} catch (FileNotFoundException e) {
			Log.e("Database", "File not found");
			e.printStackTrace();
		} catch (IOException e) {
			Log.e("Database", "IO exception");
			e.printStackTrace();
		}
		
	}

}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics