Есть код:
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()?
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники