title: Opening Android Sqlite Database in Fragment
body: <p>I'm trying to open and write to a Sqlite database in Android. According to the log output, it's not opening. I know that my syntax isn't great and I should be saving from a Party object instead of straight from the fragment interface, but my focus is really on the the process. Any help would be super helpful!</p>
  
  <pre><code>package com.android.sqldatabase.sqldatabaseapp;
  
  //imports deleted to save space
  
  public class SqlDatabase {
  
  public static final String KEY_ROWID = "_id";
  public static final String KEY_NAME = "name";
  public static final String KEY_PARTY = "party_date";
      public static final String KEY_STATE = "state";
  public static final String KEY_JDATE = "j_date";
  public static final String KEY_JTITLE = "j_title";
  public static final String KEY_JENTRY = "j_entry";
  public static final String KEY_JRATING = "j_rating";
      public static final String KEY_JENTRYEDITION = "j_entryEdition";
  
  private static final String DATABASE_NAME = "PartyInfoDB";
  
      private static final String DATABASE_READABLE = "readableInformation";
  private static final String DATABASE_WRITEABLE = "writeableInformation";
  private static final int DATABASE_VERSION = 20141;
  
  private DbHelper mHelper;
  
  private final Context mContext;
  
  private SQLiteDatabase mDatabase;
  
  private static class DbHelper extends SQLiteOpenHelper {
  
      public DbHelper(Context context) {
          super(context, DATABASE_NAME, null, DATABASE_VERSION);
      }
  
      @Override
      //Set up database here
          public void onCreate(SQLiteDatabase db) {
          db.execSQL("CREATE TABLE " + DATABASE_READABLE + " (" + 
                   //Column name     Type of variable
                  KEY_ROWID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + 
                  KEY_NAME + " TEXT NOT NULL, " +
                  KEY_PARTY + " TEXT NOT NULL, " +
                  KEY_STATE + " TEXT NOT NULL);"
  
          db.execSQL("CREATE TABLE " + DATABASE_WRITEABLE + " (" +
                  KEY_JENTRYEDITION + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
                  KEY_JDATE + " INTEGER NOT NULL, " +
                  KEY_JTITLE + " TEXT NOT NULL, " +
                  KEY_JRATING + " FLOAT NOT NULL, " +
                  KEY_JENTRY + " TEXT NOT NULL);"
                  );
  
      }
  
      @Override
      public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
          db.execSQL("DROP TABLE IF EXISTS " + DATABASE_READABLE);
          db.execSQL("DROP IF TABLE EXISTS " + DATABASE_WRITEABLE);
          onCreate(db);
      }
  
  }
  
  public SqlDatabase (Context c) {
      mContext = c;
  }
  
  public SqlDatabase open() throws SQLException {
      //Set up the helper with the context
      mHelper = new DbHelper (mContext);
      //Open the database with our helper
      mDatabase = mHelper.getWritableDatabase();
      return this;
  }
  
  
      mHelper.close();
          }
  
  public long createEntry(String title, String entry, float ratingBar,
          String date) {
      ContentValues cv = new ContentValues();
      cv.put(KEY_JDATE, date);
      cv.put(KEY_JTITLE, title);
      cv.put(KEY_JRATING, ratingBar);
      cv.put(KEY_JENTRY, date);
      return mDatabase.insert(DATABASE_WRITEABLE, null, cv); 
  }
  }
  </code></pre>
  
  <p>And here is the interface screen:</p>
  
  <pre><code>package com.android.sqldatabase.sqldatabaseapp;
  
  //imports deleted to save space
  
  public class LogFragment extends Fragment implements OnClickListener{
      private String TAG;
  private String TAG1;
  private String mName;
  EditText mSqlTitle, mSqlEntry;
  Button mSaveButton;
  RatingBar mSqlRatingBar;
  private TextView mSqlDate;
  private Party mParty;
  private Date mDate;
  private Context mContext;
  
  //Our onCreate method
  @Override
  public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState); 
      }
  
  //Inflate our fragment into the container
  @Override
  public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle    
      savedInstanceState) {
  View v = inflater.inflate(R.layout.fragment_log, parent, false);
  
      mDate = new Date();
      mSqlTitle = (EditText)v.findViewById(R.id.review_title);
      mSqlEntry = (EditText)v.findViewById(R.id.review_entry_textbox);
      mSaveButton = (Button)v.findViewById(R.id.sqlsave_button);
      mSaveButton.setOnClickListener(this);
      mSqlRatingBar = (RatingBar)v.findViewById(R.id.party_ratings_bar);
      mSqlDate = (TextView)v.findViewById(R.id.review_date);
  
      SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy", Locale.US);
      String sdfString = sdf.format(mDate);
      mSqlDate.setText(sdfString);
  
      return v;
  }
  
  //Our 2 buttons
  public void onClick(View arg0) {
  switch (arg0.getId()) {
      case R.id.sqlsave_button:
  
          boolean didItWork = true;
          try {
          //Convert our edit texts to strings
          String  title = mSqlTitle.getText().toString();
          String  entry = mSqlEntry.getText().toString();
          float ratingBar = mSqlRatingBar.getRating();
          String date = mSqlDate.getText().toString();
  
          //Write all of this to the database
          SqlDatabase dbEntry = new SqlDatabase(this);
          dbEntry.open();
          Log.i(TAG1, "Database opened.");
          dbEntry.createEntry(title, entry, ratingBar, date);
          dbEntry.close();
  
          } catch (Exception e) {
              didItWork = false;
              Log.e(TAG, "Database didn't upgrade when button pressed");
          } finally {
              if(didItWork) {
                  Toast toast = Toast.makeText(getActivity(),   
                                      R.string.save_toast, Toast.LENGTH_LONG);
                      toast.show();
              }
      }
  
      break;
              R.id.cancelButton
              //INSET CANCEL BUTTON HERE
      }
  }
  }
  </code></pre>