I am trying to query my database and sort my start column in descending order then get the first row.
public Cursor getLowestEvent(){
String sort = "SELECT * FROM " + EVENTS_TABLE + " ORDER_BY " + START + " DESC";
Cursor c = db.query(EVENTS_TABLE, new String[] {ID,START},null,null,null,null,sort); //error
if(c != null){
c.moveToFirst();
}
return c;
}
doing this gives me a null pointer exception and I dont know why, there are items in the database so it has to be a problem with my sort?
08-25 11:03:14.503: ERROR/AndroidRuntime(2367): java.lang.NullPointerException
08-25 11:03:14.503: ERROR/AndroidRuntime(2367): at com.app.notifyme.CalendarDB.getLowestEvent(CalendarDB.java:106)
08-25 11:03:14.503: ERROR/AndroidRuntime(2367): at com.app.notifyme.Calendar$5.onClick(Calendar.java:162)
08-25 11:03:14.503: ERROR/AndroidRuntime(2367): at com.android.internal.app.AlertController$AlertParams$3.onItemClick(AlertController.java:873)
08-25 11:03:14.503: ERROR/AndroidRuntime(2367): at android.widget.AdapterView.performItemClick(AdapterView.java:284)
08-25 11:03:14.503: ERROR/AndroidRuntime(2367): at android.widget.ListView.performItemClick(ListView.java:3513)
08-25 11:03:14.503: ERROR/AndroidRuntime(2367): at android.widget.AbsListView$PerformClick.run(AbsListView.java:1849)
08-25 11:03:14.503: ERROR/AndroidRuntime(2367): at android.os.Handler.handleCallback(Handler.java:587)
08-25 11:03:14.503: ERROR/AndroidRuntime(2367): at android.os.Handler.dispatchMessage(Handler.java:92)
08-25 11:03:14.503: ERROR/AndroidRuntime(2367): at android.os.Looper.loop(Looper.java:123)
08-25 11:03:14.503: ERROR/AndroidRuntime(2367): at android.app.ActivityThread.main(ActivityThread.java:3839)
08-25 11:03:14.503: ERROR/AndroidRuntime(2367): at java.lang.reflect.Method.invokeNative(Native Method)
08-25 11:03:14.503: ERROR/AndroidRuntime(2367): at java.lang.reflect.Method.invoke(Method.java:507)
08-25 11:03:14.503: ERROR/AndroidRuntime(2367): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
08-25 11:03:14.503: ERROR/AndroidRuntime(2367): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
08-25 11:03:14.503: ERROR/AndroidRuntime(2367): at dalvik.system.NativeStart.main(Native Method)
Please see this link. Your last parameter (order by) is not supposed to be an ENTIRE sql statement (SELECT * FROM …). It is supposed to be formatted as a SQL ORDER BY clause. Since it says exclude the ORDER BY itself, I think it would just be the column you want to order by and the identifier to determine which way to order (“ID DESC”).
The way you are building your query (in the string “sort”), you could also execute db.rawQuery.
EDIT: What resolved the issue was adding db.open() before the db.query() call.