I've got a condition in sqlite database.First i produced database externally after which place it within the assets folder.The next code copy the database.

public class DbH extends SQLiteOpenHelper{
    private Context mycontext;

    private String DB_PATH = "/data/data/com.android.quotes/databases/";
    private static String ROW_ID="_id";
    private static String DB_NAME = "mdb1.db";
    public SQLiteDatabase myDataBase;
    /*private String DB_PATH = "/data/data/"
        + mycontext.getApplicationContext().getPackageName()
        + "/databases/";
    */

    public DbH(Context context) throws IOException  {
        super(context,DB_NAME,null,1);
        this.mycontext=context;
        boolean dbexist = checkdatabase();
        if(dbexist){
            //System.out.println("Database exists");
            opendatabase(); 
        } else {
            System.out.println("Database doesn't exist");
            createdatabase();
        }
    }

    public void createdatabase() throws IOException{
        boolean dbexist = checkdatabase();
        if(dbexist){
            System.out.println(" Database exists.");
        } else {
            this.getReadableDatabase();
            try{
                copydatabase();
            } catch(IOException e){
            throw new Error("Error copying database");
            }
        }
    }

    private boolean checkdatabase() {
        //SQLiteDatabase checkdb = null;
        boolean checkdb = false;
        try{
            String myPath = DB_PATH + DB_NAME;
            File dbfile = new File(myPath);
            SQLiteDatabase.openDatabase
               (myPath,null,SQLiteDatabase.OPEN_READWRITE);
            checkdb = dbfile.exists();
            } catch(SQLiteException e){
                System.out.println("Database doesn't exist");
            }
            return checkdb;
    }

    private void copydatabase() throws IOException {
        //Open your local db as the input stream
        InputStream myinput = mycontext.getAssets().open(DB_NAME);

        // Path to the just created empty db
       String outfilename = DB_PATH + DB_NAME;

        //Open the empty db as the output stream
        OutputStream myoutput = new FileOutputStream(outfilename);

        // transfer byte to inputfile to outputfile
        byte[] buffer = new byte[1024];
        int length;
        while ((length = myinput.read(buffer))>0){
            myoutput.write(buffer,0,length);
        }
        //Close the streams
        myoutput.flush();
        myoutput.close();
        myinput.close();
    }

    public void opendatabase() throws SQLException{
        //Open the database
        String mypath = DB_PATH + DB_NAME;
        myDataBase = SQLiteDatabase.openDatabase(
            mypath, null, SQLiteDatabase.OPEN_READWRITE
        );
    }

    public synchronized void close(){
        if(myDataBase != null){
            myDataBase.close();
        }
        super.close();
    }

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

    @Override
    public void onCreate(SQLiteDatabase arg0) {
    // TODO Auto-generated method stub
    }

}

In primary activity when i first call createdatabase after which opendatabase. Now i craeted only two table in sqlite database the first is android_metadata and 2nd is mTable.after i run this program the next errors occur.

  1. Although database is produced and i can tell it using file explorer in eclipse only android_metadata table can there be and mTable isn't there.
  2. Therefore it states no such table is available while choosing * from mTable.

Any suggestion where i m failing. I m tugging my hair in one week me. Help. Thanks ahead of time.