I'm using an existing database. For a table in that database, I'm updating a column's value of a particular row identified by 'chapter' and 'verse' by some user input (String). The updating is successful, however on retrieving the updated value, it shows null.
FragmentFour.java
public class FragmentFour extends Fragment {
DataBaseHelper dbHelper;
@Override
public View onCreateView(final LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
......
dbHelper = new DataBaseHelper(getActivity());
......
}
public void someFunction(){
String notes = dbHelper.getNotes("SomeBookName",some_chapter,some_verse);
}
}
DataBaseHelper.java
public class DataBaseHelper extends SQLiteOpenHelper{
private static String TAG = "DataBaseHelper"; // Tag just for the LogCat window destination path (location) of our database on device
private static String DB_PATH = "";
private static String DB_NAME ="zypnt.sqlite";// Database name
private SQLiteDatabase mDataBase;
private final Context mContext;
public DataBaseHelper(Context context)
{
super(context, DB_NAME, null, 1);// 1? its Database Version
if(android.os.Build.VERSION.SDK_INT >= 17){
DB_PATH = context.getApplicationInfo().dataDir + "/databases/";
}
else
{
DB_PATH = "/data/data/" + context.getPackageName() + "/databases/";
}
this.mContext = context;
}
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
}
public void createDataBase() throws IOException
{
//If database not exists copy it from the assets
boolean mDataBaseExist = checkDataBase();
if(!mDataBaseExist)
{
this.getReadableDatabase();
this.close();
try
{
//Copy the database from assests
copyDataBase();
Log.e(TAG, "createDatabase database created");
}
catch (IOException mIOException)
{
throw new Error("ErrorCopyingDataBase");
}
}
}
//Check that the database exists here: /data/data/your package/databases/Da Name
private boolean checkDataBase()
{
File dbFile = new File(DB_PATH + DB_NAME);
//Log.v("dbFile", dbFile + " "+ dbFile.exists());
return dbFile.exists();
}
//Copy the database from assets
private void copyDataBase() throws IOException
{
InputStream mInput = mContext.getAssets().open(DB_NAME);
String outFileName = DB_PATH + DB_NAME;
OutputStream mOutput = new FileOutputStream(outFileName);
byte[] mBuffer = new byte[1024];
int mLength;
while ((mLength = mInput.read(mBuffer))>0)
{
mOutput.write(mBuffer, 0, mLength);
}
mOutput.flush();
mOutput.close();
mInput.close();
}
//Open the database, so we can query it
public boolean openDataBase() throws SQLException
{
String mPath = DB_PATH + DB_NAME;
//Log.v("mPath", mPath);
mDataBase = SQLiteDatabase.openDatabase(mPath, null, SQLiteDatabase.CREATE_IF_NECESSARY);
//mDataBase = SQLiteDatabase.openDatabase(mPath, null, SQLiteDatabase.NO_LOCALIZED_COLLATORS);
return mDataBase != null;
}
@Override
public synchronized void close()
{
if(mDataBase != null)
mDataBase.close();
super.close();
}
public String getNotes(String book,String chapter,String verse){
SQLiteDatabase mDb = this.getWritableDatabase();
String notes = "";
try{
Cursor c = mDb.rawQuery("SELECT footnotes FROM " + book + " WHERE chapter="+chapter+" and verse="+verse+"", null);
if(c.getCount()<=0)
return notes;
else {
c.moveToFirst();
notes = c.getString(0);
c.close();
}
} catch (Exception e) {
Log.e("getCrossReferences", e.getMessage());
}
mDb.close();
return notes;
}
public Boolean setNotes(String book,String chapter,String verse,String note){
SQLiteDatabase mDb = this.getWritableDatabase();
Boolean flag = false;
try{
Cursor c = mDb.rawQuery("UPDATE "+book+" SET footnotes='" + note + "' WHERE chapter="+chapter+" and verse="+verse+"", null);
c.close();
flag = true;
} catch (Exception e) {
Log.e("getCrossReferences", e.getMessage());
}
mDb.close();
return flag;
}
}
Try this change:
public Boolean setNotes(String book,String chapter,String verse,String note){
SQLiteDatabase mDb = this.getWritableDatabase();
Boolean flag = false;
try{
Cursor c = mDb.rawQuery("UPDATE "+book+" SET footnotes='" + note + "' WHERE chapter="+chapter+" and verse="+verse+"", null);
c.moveToFirst();
c.close();
flag = true;
} catch (Exception e) {
Log.e("getCrossReferences", e.getMessage());
}
mDb.close();
return flag;
}