Note that there are some explanatory texts on larger screens.

plurals
  1. POSQLiteOpenHelper.getWritableDatabase problem
    text
    copied!<p>EDIT: I believe i may have found the problem. I need to work on my SmartDBHelper class. Will do this and post the results here.</p> <p>EDIT: Found a link to someone who is having similar problem. Will be checking this to see if it fixes asap. <a href="https://stackoverflow.com/questions/3489427/keep-getting-nullpointerexceptions-when-attempting-to-call-getwritabledatabase">Another Post</a></p> <p>EDIT: Updated to reflect some changes made suggested by some of the posters. Problem is still occurring.</p> <p>THE POST BELOW:</p> <p>My application need to be able to write to the sqlite3 database that is on the android from 2 different events. One of my events is writing to the database just fine. When the second event tries to write to the database the attached error occurs. I have no clue why this is happening or how to fix it. I have tried numerous things the past couple hours and googled a ton. Can someone please view the code i have below and let me know what you think?</p> <p>If you need any more information please let me know asap.</p> <p>Thanks in advance!</p> <pre><code>//This is the sqliteopenhelper i created 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); // TODO Auto-generated constructor stub } @Override public void onCreate(SQLiteDatabase db) { // TODO Auto-generated method stub 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) { // TODO Auto-generated method stub } } </code></pre> <hr> <pre><code>//This is the part that is working CORRECTLY 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); // XML code stuff left out here, was not needed } 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(); } } </code></pre> <hr> <pre><code>// This is the event that is NOT working correctly public class DataBuilder extends Activity { private List _listeners = new ArrayList(); private SmartDataObject data; Context tThis; private SmartDBHelper dBHelper; private Date timeStampReference; //for keeping track of the first time 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(); // CODE FAILS AT THIS POINT 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); } } </code></pre> <hr> <pre><code>// 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) </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload