-2

I am using a database in my app. For that I have created sqlite database with single instance. But when I run the app no table is being created. I dont know what is the problem.

Code

public class DatabaseHelper extends SQLiteOpenHelper {
    private static DatabaseHelper mInstance = null;

    private static final String DATABASE_NAME = "MCQDemo";
    private static final String DATABASE_TABLE = "LANGUAGETABLE";
    private static final int DATABASE_VERSION = 1;

    private Context mCxt;

    public static DatabaseHelper getInstance(Context ctx) {
        /**
         * use the application context as suggested by CommonsWare.
         * this will ensure that you dont accidentally leak an Activitys
         * context (see this article for more information:
         * http://developer.android.com/resources/articles/avoiding-memory-leaks.html)
         */
        if (mInstance == null) {
            mInstance = new DatabaseHelper(ctx.getApplicationContext());
        }
        return mInstance;
    }

    /**
     * constructor should be private to prevent direct instantiation.
     * make call to static factory method "getInstance()" instead.
     */
    private DatabaseHelper(Context ctx) {
        super(ctx, DATABASE_NAME, null, DATABASE_VERSION);
        this.mCxt = ctx;
    }

    @Override
    public void onCreate(SQLiteDatabase db) {

        try {
            db.execSQL(LanguageTable.CreateTable());
        } catch (SQLiteException e) {

        }


    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }
}

LanguageTable

    public class LanguageTable {

        private SQLiteDatabase database;
        private DatabaseHelper databaseHelper;
        private Context context;
        private static String TableName = "LANGUAGETABLE";
        private boolean result;


        private static String Language_Name = "language_name";


        public LanguageTable(Context context) {
            this.context = context;
            databaseHelper = DatabaseHelper.getInstance(context);
        }

        public static String CreateTable() {
            String query = "Create table " + TableName + " ( " +
                    Language_Name + " varchar " +
                    ");";

            return query;

        }

public boolean insertLanguages(LanguageModel object) {

        long result = 0;

        if (object == null) {
            return false;
        } else {
            database = databaseHelper.getWritableDatabase();

            ContentValues values = new ContentValues();
            values.put(Language_Name, object.getLanguageName());

            try {
                result = database.insert(TableName, null, values);
            } catch (SQLiteException e) {

            }
            database.close();

            if (result == 1) {
                return true;
            } else {
                return false;

            }


        }


    }

}

The Screen where it is called

private void initialize() {
        actionBar.hide();

        languageTable = new LanguageTable(context);
        tvMessage = (TextView) findViewById(R.id.tv_message);
        rlRoot = (RelativeLayout) findViewById(R.id.rl_splash_root);
        rlRoot.setOnClickListener(SplashScreen.this);

        //
        insertData();


    }

    private void insertData() {

        arrLanguages = context.getResources().getStringArray(R.array.language_array);
        for (int i = 0; i < arrLanguages.length; i++) {

            languageModel = new LanguageModel(arrLanguages[i]);
            result = languageTable.insertLanguages(languageModel);


        }
    }

Please do help me find out the problem. Thanks

Mykola
  • 3,343
  • 6
  • 23
  • 39
Anuj Mody
  • 21
  • 1
  • 6

1 Answers1

2

You need to call getWritableDatabase() or getReadableDatabase() on the helper to actually create the database file. When is SQLiteOpenHelper onCreate() / onUpgrade() run?

Also consider removing the try-catch in the helper's onCreate(). If there's a problem, an exception needs to be thrown up and not ignored.

Community
  • 1
  • 1
laalto
  • 150,114
  • 66
  • 286
  • 303