You do not need to create the file yourself. Just create a database and it will be created.
Try this helper:
public class DatabaseHelper extends SQLiteOpenHelper { private final Context context; public DatabaseHelper(Context context) { super(context, context.getString(R.string.app_name), null, Integer.valueOf(context.getString(R.string.database_version))); this.context = context; } @Override public void onCreate(SQLiteDatabase db) { createDb(db); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { String[] versions = context.getResources().getStringArray(R.array.database_upgrade); for (int i = oldVersion; i < newVersion; i++) { String[] statements = versions[i - 1].split(";"); for (String statement : statements) { db.execSQL(statement); } } } private void createDb(SQLiteDatabase db) { try { db.beginTransaction(); String[] tables = context.getResources().getStringArray(R.array.database_tables); for (String table : tables) { db.execSQL(table); } } catch (SQLException e) { Log.e(context.getString(R.string.app_name), context.getString(R.string.database_access_error)); } finally { db.endTransaction(); } } }
and for resources, including the number of the new version of the database that updates its structure:
<string name="database_version">2</string> <string-array name="database_tables"> <item>CREATE TABLE "COLLECT" ( _ID INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, DATE TEXT NOT NULL, SENT INTEGER, OM REAL, CMSR REAL, DC REAL );</item> </string-array> <string-array name="database_upgrade"> <item>ALTER TABLE COLLECT ADD COLUMN SENT INTEGER;</item> </string-array>
As you can see, when database_version is 1, sqliteHelper just creates my collect table, like my example. If the database already exists, as in the example, and the version number is now 2 or higher, sqliteHelper updates the read array of the db structure database_upgrade , iterating over all its elements.
source share