-1

I get this error: class "DataBaseHelper" must either be abstract or implement abstract method.

When running code i found and stackoverflow, this is where i got the code: How to use my own database - android

It's the first part where i get errors, second part is working fine.

code:

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

import android.content.Context;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

public class DataBaseHelper extends SQLiteOpenHelper
{
    private static String TAG = "DataBaseHelper"; // Tag just for the LogCat window
    //destination path (location) of our database on device
    private static String DB_PATH = "";
    private static String DB_NAME ="menuStat.db.sqlite";// Database name
    private SQLiteDatabase mDataBase;
    private final Context mContext;

    public DataBaseHelper(Context context)
    {
         super(context, DB_NAME, null, 1);// 1? its Database Version
         if(android.os.Build.VERSION.SDK_INT >= 17){
              DB_PATH = context.getApplicationInfo().dataDir + "/databases/";
         }
         else
         {
              DB_PATH = "/data/data/" + context.getPackageName() + "/databases/";
         }
         this.mContext = context;
    }

    public void createDataBase() throws IOException
    {
        //If database not exists copy it from the assets

        boolean mDataBaseExist = checkDataBase();
        if(!mDataBaseExist)
        {
             this.getReadableDatabase();
             this.close();
             try
             {
                  //Copy the database from assests
                  copyDataBase();
                  Log.e(TAG, "createDatabase database created");
             }
             catch (IOException mIOException)
             {
                 throw new Error("ErrorCopyingDataBase");
             }
         }
     }

     //Check that the database exists here: /data/data/your package/databases/Da Name
     private boolean checkDataBase()
     {
         File dbFile = new File(DB_PATH + DB_NAME);
         //Log.v("dbFile", dbFile + "   "+ dbFile.exists());
         return dbFile.exists();
     }

     //Copy the database from assets
     private void copyDataBase() throws IOException
     {
         InputStream mInput = mContext.getAssets().open(DB_NAME);
         String outFileName = DB_PATH + DB_NAME;
         OutputStream mOutput = new FileOutputStream(outFileName);
         byte[] mBuffer = new byte[1024];
         int mLength;
         while ((mLength = mInput.read(mBuffer))>0)
         {
             mOutput.write(mBuffer, 0, mLength);
         }
         mOutput.flush();
         mOutput.close();
         mInput.close();
     }

     //Open the database, so we can query it
     public boolean openDataBase() throws SQLException
     {
         String mPath = DB_PATH + DB_NAME;
         //Log.v("mPath", mPath);
         mDataBase = SQLiteDatabase.openDatabase(mPath, null, SQLiteDatabase.CREATE_IF_NECESSARY);
         //mDataBase = SQLiteDatabase.openDatabase(mPath, null, SQLiteDatabase.NO_LOCALIZED_COLLATORS);
         return mDataBase != null;
     }

     @Override
     public synchronized void close()
     {
         if(mDataBase != null)
             mDataBase.close();
         super.close();
     }

}
Community
  • 1
  • 1
Chimpanse
  • 250
  • 1
  • 5
  • 17

2 Answers2

3

You need to implement the abstract methods onUpgrade and onCreate:

public class DataBaseHelper extends SQLiteOpenHelper {

    // ...

    @Override
    public void onCreate(SQLiteDatabase db) {
    }

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

}

See SQLiteOpenHelper documentation.

matthewrdev
  • 11,930
  • 5
  • 52
  • 64
2

You have to implement onCreate() and onUpgrade(). See http://developer.android.com/reference/android/database/sqlite/SQLiteOpenHelper.html

Reed
  • 14,703
  • 8
  • 66
  • 110