I read about 5 threads already on stackoverflow and still don't know how to do that. I already have sqlite database and i don't know where to put it in my android studio project. I want the database download with the application.
-
what cannot understand you properly? please put some code and explain your problem. – keshav kowshik Apr 19 '15 at 17:57
-
possible duplicate of [Android Pre-Populated Database](http://stackoverflow.com/questions/2409126/android-pre-populated-database) – Phantômaxx Apr 19 '15 at 17:58
-
1you want to have a preloaded db ? then you need to put it inside the asset folder. – Amit K. Saha Apr 19 '15 at 17:59
3 Answers
It doesn't pretend to be the best way, but that is how I made it in my project: Your database should be in res/assets directory. And here is a part of my DataBaseHelper class that might be helpful for you:
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();
}
}
}
}

- 4,750
- 3
- 22
- 33
If you want to have a preloaded db, then the general approach is 1. put the sqlite file in the asset folder. 2. copy that file to the data directory.
Fortunately, there is a very simple & easy to use Git library Android Asset Helper. Have a look at their usage example.

- 5,871
- 2
- 27
- 35
-
@cryuff, instead of writing so many error prone boiler plate coding , this library is generally would be a good decision to use. Rest depends on you :) – Amit K. Saha Apr 19 '15 at 18:04
You have to create a class (.java file) that handles the database for you. That class automatically creates the SQLite database in your android devide. For example, this is a sample code of an android App I`m working on:
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, " +
...
");");
}
...
}
Add some more details on what kind of problem or doubt are you having.

- 11,639
- 16
- 61
- 90