L'ouverture d'Android de Base de données Sqlite dans le Fragment

Je suis en train de l'ouvrir et écrire dans une base de données Sqlite sous Android. Selon le journal, la sortie, il n'est pas d'ouverture. Je sais que ma syntaxe n'est pas très grande et je devrais être de l'enregistrement d'une Partie de l'objet au lieu de droite à partir du fragment de l'interface, mais je me concentre vraiment sur le processus. Toute aide serait super utile!

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); 
}
}

Et voici l'interface de l'écran:

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
}
}
}
Et le journal de sortie?
Coller la ligne de/total de la sortie du journal, selon laquelle vous pensez qu'il n'est pas en mesure d'ouvrir la DB.

OriginalL'auteur user2466888 | 2014-04-15