title: Crash when trying to read from SQLite Database
body: <p>Hey, I want to read from my Database, so I used this class so it copies my database to where it should be and then when I try to query it crashes:</p>
  
  <pre><code>public class DataBaseHelper extends SQLiteOpenHelper{
      //The Androids default system path of your application database. 
  
      private static String DB_PATH = "/data/data/omar.gestore/databases/";  
      private static String DB_NAME = "test1.db";
      private SQLiteDatabase myDataBase;
  
      private final Context myContext;
  
      /** * Constructor * Takes and keeps a reference of the passed context in order to access to the application assets and resources. * @param context */
      public DataBaseHelper(Context context) {
          super(context, DB_NAME, null, 1); 
          this.myContext = context; 
      }
  
  /** * Creates a empty database on the system and rewrites it with your own database. * */
  
      public void createDataBase() throws IOException{
          boolean dbExist = checkDataBase();
  
          if(dbExist){ 
              //do nothing - database already exist       
          }else{
              // By calling this method and empty database will be created into 
              // the default system path of your application so we are gonna be 
              // able to overwrite that database with our database. 
              this.getReadableDatabase();
              try {
                  copyDataBase();
              } catch (IOException e) {
                  throw new Error("Error copying database");
              } 
          }
      }
  
      /** * Check if the database already exist to avoid re-copying the file each time you open the application. * @return true if it exists, false if it doesn't */
      private boolean checkDataBase(){
          SQLiteDatabase checkDB = null;
  
          try{ 
              String myPath = DB_PATH + DB_NAME; 
              checkDB = SQLiteDatabase.openDatabase(myPath, null,
                                  SQLiteDatabase.OPEN_READONLY);
          }catch(SQLiteException e){
  
          //database does't exist yet.
          }
  
          if(checkDB != null){
              checkDB.close();
          }
  
          return checkDB != null ? true : false; 
      }
  
      /** * Copies your database from your local assets-folder to the just created empty database in the * system folder, from where it can be accessed and handled. * This is done by transfering bytestream. * */
      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 bytes from the inputfile to the outputfile 
          byte[] buffer = new byte[1024]; 
          int length; 
          while ((length = myInput.read(buffer))&gt;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_READONLY);
      }
  
      @Override public synchronized void close() {
          if(myDataBase != null) myDataBase.close();
          super.close();
      }
  
      @Override public void onCreate(SQLiteDatabase db) {
  
      }
  
      @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
  
      }
  
      public Cursor myQuery(String mquery){
          try
          {
              Cursor c =myDataBase.rawQuery(mquery,null);
              return c;
          }
          catch(Exception x)
          {
              return null;
          }
          // Add your public helper methods to access and get content from the database. 
          // You could return cursors by doing "return myDataBase.query(....)" so itd be easy 
          // to you to create adapters for your views.
      }
  }
  </code></pre>
  
  <p>and in my Main class:</p>
  
  <pre><code>DataBaseHelper myDatabase=new DataBaseHelper(this);
  
  try {
      myDatabase.createDataBase();
  } catch (IOException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
  }
  myDatabase.myQuery("SELECT * FROM adab;");
  </code></pre>
  
  <p>but it crashes because of Null Pointer.. Can anyone tell me why? Thanks.</p>
  
  <p>EDIT1: the crash is in this line: Cursor c =myDataBase.rawQuery(mquery,null); in myQuery function</p>