Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将数据库放入android项目_Android_Sqlite - Fatal编程技术网

将数据库放入android项目

将数据库放入android项目,android,sqlite,Android,Sqlite,我在stackoverflow上已经读到了大约5个线程,但仍然不知道如何做到这一点。 我已经有了sqlite数据库,我不知道把它放在我的android studio项目中的什么地方。 我希望数据库与应用程序一起下载。如果您想要预加载数据库,那么一般的方法是 1.将sqlite文件放在资产文件夹中。 2.将该文件复制到数据目录 幸运的是,有一个非常简单易用的Git库。请看一下它们的使用示例。您必须创建一个类(.java文件)来为您处理数据库。该类自动在android设备中创建SQLite数据库。例

我在stackoverflow上已经读到了大约5个线程,但仍然不知道如何做到这一点。 我已经有了sqlite数据库,我不知道把它放在我的android studio项目中的什么地方。
我希望数据库与应用程序一起下载。

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


幸运的是,有一个非常简单易用的Git库。请看一下它们的使用示例。

您必须创建一个类(.java文件)来为您处理数据库。该类自动在android设备中创建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, " +
                   ...
                   ");");
    }
...
}

添加更多关于您有什么问题或疑问的详细信息。

这并不假装是最好的方法,但我在项目中就是这样做的: 您的数据库应该位于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();
            }
        }
    }
}

什么不能正确理解你?请输入一些代码并解释您的问题。您想要预加载数据库吗?然后你需要把它放在asset文件夹中。@cryuff,不要写那么多容易出错的boiler plate编码,这个库通常是一个很好的选择。休息取决于你:)