Reputation: 729
I have the following Java Class
package com.sjhdevelopment.shaunharrison.myejuiceapp;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class MyDBHelper extends SQLiteOpenHelper {
public static final String DATABASE_NAME = "EJuiceData.db";
public static final int DATABASE_VERSION = 1;
public MyDBHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
public void onCreate(SQLiteDatabase database) {
database.execSQL("create table if not exists Inventory");
}
@Override
public void onUpgrade(SQLiteDatabase database, int oldVersion, int newVersion) {
if (newVersion > oldVersion)
database.execSQL("ALTER TABLE Recipe ADD COLUMN NOTES TEXT");
onCreate(database);
}
}
Then in my main activity I have the following;
public class Calculation extends AppCompatActivity {
private MyDBHelper dbHelper;
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_calculation);
try {
dbHelper = new MyDBHelper(this);
dbHelper.getWritableDatabase();
}
catch(Exception e)
{
showError("Error", e.getMessage());
}
}
However, when I debug the code to see if the database + tables are being created with a break point on the try and on the database.execSQL("create.... There debugger doesn't actually go into the MyDBHelper class to do anything, therefore I'm assuming that the database + tables aren't being created
I've looked online and it says that when a getWritableDatabase/readable is called the onCreate method should get called
Any idea's as to what I'm doing wrong?
Upvotes: 1
Views: 1116
Reputation: 5791
It looks like your SQL is not correct onCreate. Instead of database.execSQL("create table if not exists Inventory");
it should be
database.execSQL("CREATE TABLE table_name
(id_column INTEGER PRIMARY KEY
, column_name TEXT);";
You need to manually created every table with all the corrected columns. They will be created once you call the database for the first time.
Upvotes: 0
Reputation: 6793
onCreate(...)
is only called when the database is created for the first time. If you want to change your database you have to increase DATABASE_VERSION
then it will jump into onUpgrade(...)
Upvotes: 2