EDIT: I believe that I might have found the problem. I need to work on the SmartDBHelper class. You will do this and post the results here.
EDIT: Found a link to someone who has a similar problem. This will be checked to see if it corrects as soon as possible. Another post
EDIT: Updated to reflect some changes made by some posters. The problem is still happening.
AFTER BELOW:
My application should be able to write to the sqlite3 database located on android from two different events. One of my events is just writing to the database. When the second event tries to write to the database, a related error occurs. I do not know why this is happening or how to fix it. I have tried many things in the last couple of hours and searched for a ton. Can someone please review the code I have and let me know what you think?
If you need more information, please let me know as soon as possible.
Thanks in advance!
public class SmartDBHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "smart_lite_db.db";
private static final int DATABASE_VERSION = 2;
private static final String NOTIFY_TABLE_NAME = "user_notify_data";
private static final String HR_TABLE_NAME = "user_hr_data";
private static final String NOTIFY_TABLE_CREATE =
"CREATE TABLE " + NOTIFY_TABLE_NAME +
" (counter INTEGER PRIMARY KEY, " +
"userresponse INTEGER, " +
"notifytime INTEGER);";
private static final String DATA_TABLE_CREATE =
"CREATE TABLE " + HR_TABLE_NAME +
" (counter INTEGER PRIMARY KEY, " +
"hr INTEGER, " +
"act INTEGER, " +
"timestamp INTEGER);";
public SmartDBHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
Log.v("smartdbhelper", "before creation");
db.execSQL(NOTIFY_TABLE_CREATE);
Log.v("smartdbhelper", "middle creation");
db.execSQL(DATA_TABLE_CREATE);
Log.v("smartdbhelper", "after creation");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
public class DataNotificationSurvey extends Activity {
private SmartDBHelper dBHelper;
private Date timeStamp;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.datanotificationlayout);
Log.v("datanotificationsurvey", "inside datanotificationsurvey");
dBHelper = new SmartDBHelper(this);
timeStamp = new Date(DataNotification.when);
}
public void submitNotify(int tempType, Date tempDate) {
SQLiteDatabase dBH = dBHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("userresponse", tempType);
values.put("notifytime", (tempDate.getTime()/1000));
dBH.insert("user_notify_data", null, values);
dBH.close();
}
}
public class DataBuilder extends Activity {
private List _listeners = new ArrayList();
private SmartDataObject data;
Context tThis;
private SmartDBHelper dBHelper;
private Date timeStampReference;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.v("databuilder", "on create");
dBHelper = new SmartDBHelper(this);
}
public void prepareData(SmartDataObject temp) {
submitData(temp);
}
public void submitData(SmartDataObject temp) {
data = temp;
System.out.println("Where: DB-submitData");
try {
SQLiteDatabase dBH = dBHelper.getWritableDatabase();
Log.v("databuilder", "after writable");
ContentValues values = new ContentValues();
values.put("hr", data.getHeartRate());
values.put("act", data.getAct());
values.put("timestamp", data.getTimeStamp());
dBH.insert("user_hr_data", null, values);
Log.v("databuilder", "after insert");
dBH.close();
fireDataBuilderEvent(data);
}
catch(SQLException e) {
e.printStackTrace();
}
catch(NullPointerException e) {
e.printStackTrace();
}
}
public synchronized void addDataBuilderListener(DataBuilderListener listener) {
_listeners.add(listener);
}
public synchronized void removeDataBuilderListener(DataBuilderListener listener) {
_listeners.remove(listener);
}
private synchronized void fireDataBuilderEvent(SmartDataObject temp) {
DataBuilderEvent dRE = new DataBuilderEvent(this, temp);
Iterator listeners = _listeners.iterator();
while(listeners.hasNext()) {
((DataBuilderListener)listeners.next()).dataBuilderReceived(dRE);
}
}
public interface DataBuilderListener {
public void dataBuilderReceived(DataBuilderEvent event);
}
}
// The error that is occuring.
03-13 17:38:40.130: INFO/System.out(279): Where: DB-submitData
03-13 17:38:40.130: WARN/System.err(279): java.lang.NullPointerException
03-13 17:38:40.151: WARN/System.err(279): at cpe495.smartapp.DataBuilder.submitData(DataBuilder.java:41)
03-13 17:38:40.151: WARN/System.err(279): at cpe495.smartapp.DataBuilder.prepareData(DataBuilder.java:34)
03-13 17:38:40.171: WARN/System.err(279): at cpe495.smartapp.SmartApp$2.dataAnalyzedReceived(SmartApp.java:56)
03-13 17:38:40.171: WARN/System.err(279): at cpe495.smartapp.DataRobot.fireDataAnalyzedEvent(DataRobot.java:269)
03-13 17:38:40.181: WARN/System.err(279): at cpe495.smartapp.DataRobot.analyzeData(DataRobot.java:79)
03-13 17:38:40.181: WARN/System.err(279): at cpe495.smartapp.SmartApp$1.dataReceivedReceived(SmartApp.java:49)
03-13 17:38:40.191: WARN/System.err(279): at cpe495.smartapp.ConnectDevice.fireDataReceivedEvent(ConnectDevice.java:79)
03-13 17:38:40.201: WARN/System.err(279): at cpe495.smartapp.ConnectDevice.run(ConnectDevice.java:46)
03-13 17:38:40.211: WARN/System.err(279): at java.lang.Thread.run(Thread.java:1096)