0
点赞
收藏
分享

微信扫一扫

Android导入已有Sqlite数据库

迪莉娅1979 2022-01-20 阅读 121

在res文件夹下创建文件夹raw,在raw中放入要导入的sqlite数据库

创建java类命名为DBManager,编写以下代码:

public class DBManager {
    private final int BUFFER_SIZE = 400000;  //缓存大小
    public static final String DB_NAME = "wisdom.db"; //保存的数据库文件名
    public static final String PACKAGE_NAME = "com.twl.dgtest5";   //包名
    public static final String DB_PATH = "/data"   //路径名
            + Environment.getDataDirectory().getAbsolutePath() + "/" + PACKAGE_NAME;  //在手机里存放数据库的位置

    private SQLiteDatabase database;
    private Context context;

    DBManager(Context context) {
        this.context = context;
    }

    public void openDatabase() {
        this.database = this.openDatabase(DB_PATH + "/" + DB_NAME);
    }

    private SQLiteDatabase openDatabase(String dbfile) {
        try {
            if (!(new File(dbfile).exists())) {//判断数据库文件是否存在,若不存在则执行导入,否则直接打开数据库
                InputStream is = this.context.getResources().openRawResource(
                        R.raw.wisdom); //欲导入的数据库
                FileOutputStream fos = new FileOutputStream(dbfile);
                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(dbfile, null);
            return db;
        } catch (FileNotFoundException e) {
            Log.e("Database", "File not found");
            e.printStackTrace();
        } catch (IOException e) {
            Log.e("Database", "IO exception");
            e.printStackTrace();
        }
        return null;
    }
    public void closeDatabase() {
        this.database.close();
    }

在MainActivity中实例化调用该方法

private DBManager dbManager;

dbManager=new DBManager(this);
dbManager.openDatabase();
dbManager.closeDatabase();

创建SQLiteDatabase调用方法查询导入成功的数据库

private SQLiteDatabase db;
db=SQLiteDatabase.openOrCreateDatabase(DBManager.DB_PATH+"/"+
        DBManager.DB_NAME,null);
query();

private void query(){
    Cursor cursor=db.query("WISDOM_ENTITY",null,null,null,null,null,null);
    if (cursor!=null){
        if (cursor.moveToFirst()){
            do {
                int id=cursor.getInt(cursor.getColumnIndex("_id"));
                String english=cursor.getString(cursor.getColumnIndex("ENGLISH"));
                String china=cursor.getString(cursor.getColumnIndex("CHINA"));
                Log.i(TAG, "query: "+id+","+english+","+china);
            }while (cursor.moveToNext());
        }
    }
}
举报

相关推荐

0 条评论