title: SQLite Problem: Program Crash When Try a Query
body: <p>I have a problem programming with Android SDK 1.6. I'm doing the same things of the "notepad example" but the program crash when I try some query. If I try to do a query directly in to the DatabaseHelper create() method it goes, but out of this function it doesn't. Do you have any idea?</p>
  
  <p>This is the source:</p>
  
  <pre><code>public class DbAdapter {
  
      public static final String KEY_NAME = "name";
      public static final String KEY_TOT_DAYS = "totdays";
      public static final String KEY_ROWID = "_id";
  
      private static final String TAG = "DbAdapter";
      private DatabaseHelper mDbHelper;
      private SQLiteDatabase mDb;
  
      private static final String DATABASE_NAME = "flowratedb";
      private static final String DATABASE_TABLE = "girl_data";
      private static final String DATABASE_TABLE_2 = "girl_cyle";
      private static final int DATABASE_VERSION = 2;
      /**
       * Database creation sql statement
       */
      private static final String DATABASE_CREATE =
              "create table "+DATABASE_TABLE+" (id integer, name text not null, totdays int);";
      private static final String DATABASE_CREATE_2 =
          "create table "+DATABASE_TABLE_2+" (ref_id integer, day long not null);";
  
      private final Context mCtx;
  
      private static class DatabaseHelper extends SQLiteOpenHelper {
  
          DatabaseHelper(Context context) {
              super(context, DATABASE_NAME, null, DATABASE_VERSION);
          }
  
          @Override
          public void onCreate(SQLiteDatabase db) {
              db.execSQL(DATABASE_CREATE);
              db.execSQL(DATABASE_CREATE_2);
              db.delete(DATABASE_TABLE, null, null);
              db.delete(DATABASE_TABLE_2, null, null);
          }
  
          @Override
          public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
              Log.w(TAG, "Upgrading database from version " + oldVersion + " to "
                      + newVersion + ", which will destroy all old data");
              db.execSQL("DROP TABLE IF EXISTS "+DATABASE_TABLE);
              db.execSQL("DROP TABLE IF EXISTS "+DATABASE_TABLE_2);
              onCreate(db);
          }
      }
      public DbAdapter(Context ctx) {
          this.mCtx = ctx;
      }
      public DbAdapter open() throws SQLException {
          mDbHelper = new DatabaseHelper(mCtx);
          mDb = mDbHelper.getWritableDatabase();
          return this;
      }
      public void close() {
          mDbHelper.close();
      }
      public long createGirl(int id,String name, int totdays) {
          ContentValues initialValues = new ContentValues();
          initialValues.put(KEY_ROWID, id);
          initialValues.put(KEY_NAME, name);
          initialValues.put(KEY_TOT_DAYS, totdays);
          return mDb.insert(DATABASE_TABLE, null, initialValues);
      }
      public long createGirl_fd_day(int refid, long fd) {
          ContentValues initialValues = new ContentValues();
          initialValues.put("ref_id", refid);
          initialValues.put("calendar", fd);
          return mDb.insert(DATABASE_TABLE, null, initialValues);
      }
      public boolean updateGirl(int rowId, String name, int totdays) {
          ContentValues args = new ContentValues();
          args.put(KEY_NAME, name);
          args.put(KEY_TOT_DAYS, totdays);
  
          return mDb.update(DATABASE_TABLE, args, KEY_ROWID + "=" + rowId, null) &gt; 0;
      }
      public boolean deleteGirlsData() {
          if (mDb.delete(DATABASE_TABLE_2, null, null)&gt;0)
              if(mDb.delete(DATABASE_TABLE, null, null)&gt;0)
                  return true;
          return false;
      }
      public Bundle fetchAllGirls() {
          Bundle extras = new Bundle();
          Cursor cur = mDb.query(DATABASE_TABLE, new String[] {KEY_ROWID, KEY_NAME,
                  KEY_TOT_DAYS}, null, null, null, null, null);
          cur.moveToFirst();
          int tot = cur.getCount();
          extras.putInt("tot", tot);
          int index;
          for (int i=0;i&lt;tot;i++){
              index=cur.getInt(cur.getColumnIndex("_id"));
              extras.putString("name"+index, cur.getString(cur.getColumnIndex("name")));
              extras.putInt("totdays"+index, cur.getInt(cur.getColumnIndex("totdays")));
          }
          cur.close();
          return extras;
      }
      public Cursor fetchGirl(int rowId) throws SQLException {
  
          Cursor mCursor =
                  mDb.query(true, DATABASE_TABLE, new String[] {KEY_ROWID,
                          KEY_NAME, KEY_TOT_DAYS}, KEY_ROWID + "=" + rowId, null,
                          null, null, null, null);
          if (mCursor != null) {
              mCursor.moveToFirst();
          }
          return mCursor;
  
      }
      public Cursor fetchGirlCD(int rowId) throws SQLException {
  
          Cursor mCursor =
                  mDb.query(true, DATABASE_TABLE_2, new String[] {"ref_id",
                          "day"}, "ref_id=" + rowId, null,
                          null, null, null, null);
          if (mCursor != null) {
              mCursor.moveToFirst();
          }
          return mCursor;
  
      }
  }
  </code></pre>