Выбока из базы sqlite и странный курсор

257
22 июня 2017, 03:38

Есть код:

private void soapScaner(SoapObject object){
       for(int i = 0; i<object.getPropertyCount();i++){
           if(object.getProperty(i) instanceof SoapObject) {
               String NomCode  = ((SoapObject)object.getProperty(i)).getProperty("Code").toString();
               Log.d("NomName",((SoapObject)object.getProperty(i)).getProperty("NomName").toString());
               db = dbConnector.getWritableDatabase();
               Cursor cursor = db.query(BasicSettings.Nom_DB_Table,new String[]{dbConnector.CODE},dbConnector.CODE+"=?",new String[]{NomCode},null,null,null);
               //Если товар найден то перезаписываем его текущие поля, а иначе добавляем новую строку в базу данных
               if(cursor != null){
                 if(cursor.moveToFirst()) {
                      Log.d("DBINFORM", cursor.getString(cursor.getColumnIndex(dbConnector.CODE)));
                }
               }else {
                    ContentValues cv = new ContentValues();
                    cv.put(dbConnector.CODE,((SoapObject)object.getProperty(i)).getProperty("Code").toString());
                    cv.put(dbConnector.NOM_NAME,((SoapObject)object.getProperty(i)).getProperty("NomName").toString());
                    cv.put(dbConnector.PARENT,((SoapObject)object.getProperty(i)).getProperty("Parent").toString());
                    cv.put(dbConnector.IS_GROUP,((SoapObject)object.getProperty(i)).getProperty("IsGroup").toString());
                    cv.put(dbConnector.EDO,((SoapObject)object.getProperty(i)).getProperty("EDO").toString());
                    cv.put(dbConnector.KOEF_EDO,((SoapObject)object.getProperty(i)).getProperty("KoefEDO").toString());
                    cv.put(dbConnector.EXO,((SoapObject)object.getProperty(i)).getProperty("EXO").toString());
                    cv.put(dbConnector.KOEF_EXO,((SoapObject)object.getProperty(i)).getProperty("KoefEXO").toString());
                    cv.put(dbConnector.PRICE,((SoapObject)object.getProperty(i)).getProperty("Price").toString());
                    cv.put(dbConnector.REMAINDER,((SoapObject)object.getProperty(i)).getProperty("Remainder").toString());
                    cv.put(dbConnector.REMAINDER_SEC,((SoapObject)object.getProperty(i)).getProperty("RemainderSec").toString());
                   db.insert(BasicSettings.Nom_DB_Table,null,cv);
               }
               db.close();
               cursor.close();
               publishProgress(i,object.getPropertyCount());
           }
       }
    }

Сейчас получается то, что при вызове метода cursor.moveToFirst() он возвращает false, я так понимаю это значит что строка в таблице не была найдена?

Но почему тогда сам курсор не содержит null? Я правильно понимаю, что если в переменной cursor не null, то это значит что результат выборки это одна или несколько строк, почему тогда при попытке перейти на первую строку возвращается false от метода cursor.moveToFirst()?

READ ALSO
Нужен ли вызов Bitmap.recycle()

Нужен ли вызов Bitmap.recycle()

Подскажите, пожалуйста, необходим ли вызов Bitmaprecycle() в таком случае:

320
Поиск дубликатов в списке

Поиск дубликатов в списке

Какой самый эффективный метод поиска дубликата в списке?

200
Cannot resolve method getFilter + Attempt to invoke interface method

Cannot resolve method getFilter + Attempt to invoke interface method

Я пытаюсь добавить SearchView в приложение

250
Как узнать что telephonyManager.getDeviceId(); не Null

Как узнать что telephonyManager.getDeviceId(); не Null

Подскажите как узнать что IMEI существует? У меня в приложении IMEI присваивается переменной

264