Есть такой вопрос, к которому не могу найти решения.
При открытии программы проверяется таблица, есть ли у нее значение, а именно текущая дата,
если нет то она вставляется в таблицу
код программы:
Код: Выделить всё
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tv=(TextView)findViewById(R.id.tv);
edt=(EditText)findViewById(R.id.edt);
but=(Button)findViewById(R.id.but);
but.setOnClickListener(this);
edt.requestFocus();
mdb= new createdb(this);
//открытие БД
db = mdb.getWritableDatabase();
Cursor c_cd = null;
c_cd = db.query(TABLE_NAME, new String[]{DATE },ID+" =2 and "+DATE+" =?",new String[]{sdf.format(d)},null,null,null);
if (c_cd.getCount()==0)
{
mdb.insert_v(2,0.0f,Integer.parseInt(sdf.format(d)),db); // это функция, которая вставляет данные в таблицу.
}
затем данные таблицы выводятся на экран в ListView
при первоначальном открытии приложения выдается ошибка java.NullPointerException
, при повторном открытии ошибки уже нет и данные есть в таблице и они выводятся на экран( т.е. данные с текущей датой)
если меняю if (c_cd.getCount()==0) на if (c_cd==null) , то этот участок кода полностью пропускается при первом открытии и соответственно ничего не вставляется в таблицу, но приложение никаких ошибок не выдает.
как мне кажется курсор c_cd после выполнения запроса не является null, даже когда запрос выдает пустой результат, но тогда почему получается ошибка при сравнении (c_cd.getCount()==0) ?
Если предположить, что c_cd все таки остается null, тогда не понятно почему пропускается
условие if (c_cd==null)