У меня есть таблица SQLite под названием «TBL_EVO», где я хочу получить наибольшее значение из столбца «DATE_MODIFIED».С помощью следующего запроса я получил результат в браузере SQLite, как показано ниже.
ВЫБРАТЬ МАКС. (DATE_MODIFIED) ОТ 'TBL_EVO';
Когда я запускаю запрос из кода из моего приложения, я получаю nullpointerexception.База данных абсолютно такая же, как в SQLBrowser.Таким образом, DATE_MODIFIED существует со своими значениями.Вылетает в cursor.moveToFirst();
.Даже когда я окружаю его if(cursor.moveToFirst())
Когда я делаю это, код переходит к другому.Что я делаю не так?
MainActivity.java
MySQLiteHelper db = new MySQLiteHelper(this);
String strDateTime = db.strSelectMaxDate(TableNames[intTableIDStart]);
Log.v("TBL_EVO_DATE_TIME: ", "-> "+strDateTime);
MySQLiteHelper.java - strSelectMaxDate
public String strSelectMaxDate(String strTable){
String strValueFromDB = "";
String queryMaxDate = "SELECT MAX(DATE_MODIFIED) FROM '" + strTable+"'";
Log.v("TBL_EVO_DATE_TIME_QUERY", queryMaxDate);
try{
db = this.getReadableDatabase();
cursor = db.rawQuery(queryMaxDate, null);
cursor.moveToFirst();
if(cursor == null){
strValueFromDB = "cursorisnull";
Log.v("TBL_EVO_DATE_TIME_VAL1", strValueFromDB);
}else {
strValueFromDB = cursor.getString(0);
Log.v("TBL_EVO_DATE_TIME_VAL2", cursor.getString(0));
}
}catch(Exception e){
Log.v("TBL_EVO_DATE_TIME_ERROR", "-> "+e);
strValueFromDB = "error: "+e;
}finally{
cursor.close();
db.close();
}
return strValueFromDB;
}
Logcat
09-24 15:24:23.207 21900-21917/com.spicysoftware.goexpert V/TBL_EVO_DATE_TIME_QUERY: SELECT MAX(DATE_MODIFIED) FROM 'TBL_EVO'
09-24 15:24:23.216 21900-21917/com.spicysoftware.goexpert V/TBL_EVO_DATE_TIME_ERROR: -> java.lang.NullPointerException: println needs a message
09-24 15:24:23.216 21900-21917/com.spicysoftware.goexpert V/TBL_EVO_DATE_TIME:: -> error: java.lang.NullPointerException: println needs a message