将数据库放入android项目

时间:2015-04-19 17:54:00

标签: android sqlite

我在stackoverflow上已经读过大约5个线程但仍然不知道如何做到这一点。 我已经有sqlite数据库,我不知道在我的android工作室项目中把它放在哪里。 我想用应用程序下载数据库。

3 个答案:

答案 0 :(得分:3)

它并不是假装最好的方式,但这就是我在项目中的表现: 您的数据库应位于res / assets目录中。 这是我的DataBaseHelper类的一部分,可能对您有所帮助:

public class DataBaseHelper {

    private static final String DB_NAME = "yourname.db";

    private Context mContext;
    private SQLiteDatabase mSQLiteDatabase;

    public DataBaseHelper(Context context) {
        mContext = context;
    }


    public void openOrCreate() {
        File dbFile = mContext.getDatabasePath(DB_NAME);
        if (!dbFile.exists()) 
            copyDatabase(dbFile);
        mSQLiteDatabase = SQLiteDatabase.openDatabase(dbFile.getPath(), null, SQLiteDatabase.OPEN_READWRITE);
    }

    private void copyDatabase(File dbFile) {
        InputStream is = null;
        OutputStream os = null;
        try {
            mContext.openOrCreateDatabase(DB_NAME, Context.MODE_PRIVATE, null);
            is = mContext.getAssets().open(DB_NAME);
            os = new FileOutputStream(dbFile);
            byte[] buffer = new byte[1024];
            while (is.read(buffer) > 0) {
                os.write(buffer);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                if (os != null) os.close();
                if (is != null) is.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}

答案 1 :(得分:0)

如果你想要一个预加载的数据库,那么一般的方法是  1.将sqlite文件放在资产文件夹中。  2.将该文件复制到数据目录。

幸运的是,有一个非常简单的&易于使用的Git库Android Asset Helper。看看他们的用法示例。

答案 2 :(得分:0)

您必须创建一个为您处理数据库的类(.java文件)。该类自动在android devide中创建SQLite数据库。例如,这是我正在使用的Android应用程序的示例代码:

public class DatabaseHelper extends SQLiteOpenHelper {

    private static final String DATABASE_NAME = "database.db";
    private static final int SCHEMA = 3;

    public DatabaseHelper(Context context) {
        super(context, DATABASE_NAME, null, SCHEMA);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("CREATE TABLE VISITAS (" +
                   "Id_Visita INTEGER PRIMARY KEY AUTOINCREMENT, " +
                   ...
                   ");");
    }
...
}

添加更多有关您遇到的问题或疑问的详细信息。