的Andr​​oid如何在项目导入数据库文件 [英] Android how to import database file in project

查看:101
本文介绍了的Andr​​oid如何在项目导入数据库文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有工作fine.now我做我的数据库文件添加到项目中的数据库。我有资产文件夹中的数据库文件。但不知道如何在项目中的任何体导入这里解决我的问题。

这是我dbhelper类

 公共类FoodDbHelper扩展SQLiteOpenHelper {
私有静态最后弦乐DATABASE_NAME =pkfood_calories.DB;
私有静态最终诠释DATABASE_VERSION = 1;
私有静态最后弦乐CREATE_QUERY =
        CREATE TABLE+ Food.NewDishInfo.TABLE_NAME +(
                + Food.NewDishInfo.DISH_NAME +TEXT NOT NULL,
                + Food.NewDishInfo.DISH_QUANTITY +TEXT NOT NULL,
                + Food.NewDishInfo.DISH_CALORIE +INTEGER
                + Food.NewDishInfo.DISH_FAT +TEXT NOT NULL,
                + Food.NewDishInfo.DISH_PROTEIN +TEXT NOT NULL,
                + Food.NewDishInfo.DISH_SUGAR +TEXT NOT NULL,
                + Food.NewDishInfo.DISH_VITAMINS +TEXT NOT NULL);;
公共FoodDbHelper(上下文的背景下)
{
    超(背景下,DATABASE_NAME,空,DATABASE_VERSION);
    Log.e(数据库操作,数据库创建/打开...);
}
@覆盖
公共无效的onCreate(SQLiteDatabase DB){
    db.execSQL(CREATE_QUERY);
    Log.e(数据库操作,表创建......);


}
公共无效addInformations(字符串名称,字符串量,热量整数,字符串脂肪,
                            字符串的蛋白质,糖字符串,字符串维生素,SQLiteDatabase DB){


    ContentValues​​ contentValues​​ =新ContentValues​​();
    contentValues​​.put(Food.NewDishInfo.DISH_NAME,姓名);
    contentValues​​.put(Food.NewDishInfo.DISH_QUANTITY,数量);
    contentValues​​.put(Food.NewDishInfo.DISH_CALORIE,卡路里);
    contentValues​​.put(Food.NewDishInfo.DISH_FAT,脂肪);
    contentValues​​.put(Food.NewDishInfo.DISH_PROTEIN,蛋白);
    contentValues​​.put(Food.NewDishInfo.DISH_SUGAR,糖);
    contentValues​​.put(Food.NewDishInfo.DISH_VITAMINS,维生素);
    db.insert(Food.NewDishInfo.TABLE_NAME,空,contentValues​​);
    Log.e(数据库操作,插一排......);
}
公共光标getInformations(SQLiteDatabase DB){
    光标光标;
    的String []预测= {Food.NewDishInfo.DISH_NAME,Food.NewDishInfo.DISH_QUANTITY,
            Food.NewDishInfo.DISH_CALORIE,Food.NewDishInfo.DISH_FAT,Food.NewDishInfo.DISH_PROTEIN,
            Food.NewDishInfo.DISH_SUGAR,Food.NewDishInfo.DISH_VITAMINS};
    光标= db.query(Food.NewDishInfo.TABLE_NAME,预测,NULL,NULL,NULL,NULL,DISH_NAME ASC);
    返回游标;
}
 

解决方案

假设你的数据库文件名为a.db,你可以这样做:

 尝试{
        档案文件=新的文件(DBFILE); // DBFILE是您保存数据库文件路径
        如果(!file.exists()){
            Log.e(CC,文件);
            InputStream的是= Context.getAssets()开(school.db)。
            FileOutputStream中FOS =新的FileOutputStream(DBFILE);
            byte []的缓冲区=新的字节[1024];
            诠释计数= 0;
            而((数量= is.​​read(缓冲))大于0){
                fos.write(缓冲,0,计数);
                fos.flush();
            }
            fos.close();
            is.close();
        }
        SQLiteDatabase数据库= SQLiteDatabase.openOrCreateDatabase(DBFILE,NULL);
    }赶上(FileNotFoundException异常E){
        Log.e(CC,找不到文件);
        e.printStackTrace();
    }赶上(IOException异常E){
        Log.e(CC,IO异常);
        e.printStackTrace();
    }赶上(例外五){
        Log.e(CC,异常+ e.toString());
    }
 

i have a database which work fine.now i am doing to add my database file into project. i have a database file in asset folder. but do not know how to import it in the project any body here to solve my issue.

this is my dbhelper class

public class FoodDbHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "pkfood_calories.DB";
private static final int DATABASE_VERSION = 1;
private static final String CREATE_QUERY =
        "CREATE TABLE "+ Food.NewDishInfo.TABLE_NAME+"("
                + Food.NewDishInfo.DISH_NAME+" TEXT NOT NULL,"
                + Food.NewDishInfo.DISH_QUANTITY+" TEXT NOT NULL,"
                + Food.NewDishInfo.DISH_CALORIE+" INTEGER,"
                + Food.NewDishInfo.DISH_FAT+" TEXT NOT NULL,"
                + Food.NewDishInfo.DISH_PROTEIN+" TEXT NOT NULL,"
                + Food.NewDishInfo.DISH_SUGAR+" TEXT NOT NULL,"
                + Food.NewDishInfo.DISH_VITAMINS+" TEXT NOT NULL);";
public FoodDbHelper(Context context)
{
    super(context,DATABASE_NAME,null,DATABASE_VERSION);
    Log.e("DATABASE OPERATION","Database created / opened...");
}
@Override
public void onCreate(SQLiteDatabase db) {
    db.execSQL(CREATE_QUERY);
    Log.e("DATABASE OPERATION","Table created...");


}
public void addInformations(String name ,String quantity, Integer calorie, String fat ,
                            String protein,String sugar,String vitamins, SQLiteDatabase db){


    ContentValues contentValues = new ContentValues();
    contentValues.put(Food.NewDishInfo.DISH_NAME,name);
    contentValues.put(Food.NewDishInfo.DISH_QUANTITY,quantity);
    contentValues.put(Food.NewDishInfo.DISH_CALORIE,calorie);
    contentValues.put(Food.NewDishInfo.DISH_FAT,fat);
    contentValues.put(Food.NewDishInfo.DISH_PROTEIN,protein);
    contentValues.put(Food.NewDishInfo.DISH_SUGAR,sugar);
    contentValues.put(Food.NewDishInfo.DISH_VITAMINS,vitamins);
    db.insert(Food.NewDishInfo.TABLE_NAME, null, contentValues);
    Log.e("DATABASE OPERATION","one row inserted...");
}
public Cursor getInformations(SQLiteDatabase db){
    Cursor cursor;
    String[] projections = {Food.NewDishInfo.DISH_NAME,Food.NewDishInfo.DISH_QUANTITY,
            Food.NewDishInfo.DISH_CALORIE,Food.NewDishInfo.DISH_FAT,Food.NewDishInfo.DISH_PROTEIN,
            Food.NewDishInfo.DISH_SUGAR, Food.NewDishInfo.DISH_VITAMINS};
    cursor= db.query(Food.NewDishInfo.TABLE_NAME,projections,null,null,null,null,"DISH_NAME ASC");
    return cursor;
}

解决方案

assume that your database file is named "a.db", you can do like this:

try {
        File file = new File(dbfile); //dbfile is a file path that you save the database
        if (!file.exists()) {
            Log.e("cc", "file");
            InputStream is = Context.getAssets().open("school.db");
            FileOutputStream fos = new FileOutputStream(dbfile);
            byte[] buffer = new byte[1024];
            int count = 0;
            while ((count = is.read(buffer)) > 0) {
                fos.write(buffer, 0, count);
                fos.flush();
            }
            fos.close();
            is.close();
        }
        SQLiteDatabase database = SQLiteDatabase.openOrCreateDatabase(dbfile, null);
    } catch (FileNotFoundException e) {
        Log.e("cc", "File not found");
        e.printStackTrace();
    } catch (IOException e) {
        Log.e("cc", "IO exception");
        e.printStackTrace();
    } catch (Exception e) {
        Log.e("cc", "exception " + e.toString());
    }

这篇关于的Andr​​oid如何在项目导入数据库文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆