#android #sqlite
#Android #sqlite
Вопрос:
Здесь я извлекаю данные из SQLite в Android, но проблема в том, что в базе данных всего 20 столбцов, и она правильно извлекает 19 столбцов, но когда я извлекаю последний 20-й столбец, весь массив [] пуст
Например, когда я пишу запрос
SELECT NEW_ANIMAL_ID,TAG_NO,FARMER_ID,ANIMAL_EAR_POSITION,ANIMAL_SPECIES,ANIMAL_BREED,ANIMAL_BODY_COLOR,ANIMAL_SHAPE_RIGHT,ANIMAL_SHAPE_LEFT,ANIMAL_SWITCH_OF_TAIL,AGE_YEARS,ANIMAL_OTHER_MARKS,PRAG_STATUS,NUMBER_OF_LACTATION,CURRENT_MILK,SUM_INSURED,TAG_IMAGE,HEAD_IMAGE,LEFT_SIDE_IMAGE,RIGHT_SIDE_IMAGE FROM ANIMAL_SYNC_TABLE ORDER BY NEW_ANIMAL_ID DESC
его столбец fetch 19 полностью
но когда я добавил имя последнего столбца и попытался извлечь его, отображается пустой массив []
Query = SELECT NEW_ANIMAL_ID,TAG_NO,FARMER_ID,ANIMAL_EAR_POSITION,ANIMAL_SPECIES,ANIMAL_BREED,ANIMAL_BODY_COLOR,ANIMAL_SHAPE_RIGHT,ANIMAL_SHAPE_LEFT,ANIMAL_SWITCH_OF_TAIL,AGE_YEARS,ANIMAL_OTHER_MARKS,PRAG_STATUS,NUMBER_OF_LACTATION,CURRENT_MILK,SUM_INSURED,TAG_IMAGE,HEAD_IMAGE,LEFT_SIDE_IMAGE,RIGHT_SIDE_IMAGE,TAIL_IMAGE_1 FROM ANIMAL_SYNC_TABLE ORDER BY NEW_ANIMAL_ID DESC
Вот код создания таблицы
db.execSQL("create table " TABLE_NAME_ANIMAL_SYNC "(NEW_ANIMAL_ID INTEGER PRIMARY KEY AUTOINCREMENT,FARMER_ID INT,TAG_NO TEXT,ANIMAL_EAR_POSITION TEXT,ANIMAL_SPECIES TEXT,ANIMAL_BREED TEXT,ANIMAL_BODY_COLOR TEXT,ANIMAL_SHAPE_RIGHT TEXT,ANIMAL_SHAPE_LEFT TEXT,ANIMAL_SWITCH_OF_TAIL TEXT,AGE_YEARS NUMBER,ANIMAL_OTHER_MARKS NUMBER,PRAG_STATUS NUMBER,NUMBER_OF_LACTATION NUMBER,CURRENT_MILK NUMBER,SUM_INSURED NUMBER,TAG_IMAGE BLOB NOT NULL,HEAD_IMAGE BLOB NOT NULL,LEFT_SIDE_IMAGE BLOB NOT NULL,RIGHT_SIDE_IMAGE BLOB NOT NULL,TAIL_IMAGE_1 BLOB NOT NULL)");
Вот код базы данных
public List<DataModel> getAllData() {
List<DataModel> data = new ArrayList<>();
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery("SELECT NEW_ANIMAL_ID,TAG_NO,FARMER_ID,ANIMAL_EAR_POSITION,ANIMAL_SPECIES,ANIMAL_BREED,ANIMAL_BODY_COLOR,ANIMAL_SHAPE_RIGHT,ANIMAL_SHAPE_LEFT,ANIMAL_SWITCH_OF_TAIL,AGE_YEARS,ANIMAL_OTHER_MARKS,PRAG_STATUS,NUMBER_OF_LACTATION,CURRENT_MILK,SUM_INSURED,TAG_IMAGE,HEAD_IMAGE,LEFT_SIDE_IMAGE,RIGHT_SIDE_IMAGE,TAIL_IMAGE_1 FROM ANIMAL_SYNC_TABLE ORDER BY NEW_ANIMAL_ID DESC", null);
StringBuffer stringBuffer = new StringBuffer();
DataModel dataModel = null;
if (cursor.moveToFirst()) {
do {
dataModel = new DataModel();
int NEW_ANIMAL_ID = cursor.getInt(cursor.getColumnIndexOrThrow("NEW_ANIMAL_ID"));
String TAG_COLUMN_1 = cursor.getString(cursor.getColumnIndexOrThrow("TAG_NO"));
String FARMER_ID_1 = cursor.getString(cursor.getColumnIndexOrThrow("FARMER_ID"));
String ANIMAL_EAR_POSITION_COLUMN_1 = cursor.getString(cursor.getColumnIndexOrThrow("ANIMAL_EAR_POSITION"));
String ANIMAL_SPECIES_COLUMN_1 = cursor.getString(cursor.getColumnIndexOrThrow("ANIMAL_SPECIES"));
String ANIMAL_BREED_COLUMN_1 = cursor.getString(cursor.getColumnIndexOrThrow("ANIMAL_BREED"));
String ANIMAL_BODY_COLOR_COLUMN_1 = cursor.getString(cursor.getColumnIndexOrThrow("ANIMAL_BODY_COLOR"));
String ANIMAL_SHAPE_RIGHT_COLUMN_1 = cursor.getString(cursor.getColumnIndexOrThrow("ANIMAL_SHAPE_RIGHT"));
String ANIMAL_SHAPE_LEFT_COLUMN_1 = cursor.getString(cursor.getColumnIndexOrThrow("ANIMAL_SHAPE_LEFT"));
String ANIMAL_SWITCH_OF_TAIL_COLUMN_1 = cursor.getString(cursor.getColumnIndexOrThrow("ANIMAL_SWITCH_OF_TAIL"));
String AGE_COLUMN_1 = cursor.getString(cursor.getColumnIndexOrThrow("AGE_YEARS"));
String ANIMAL_OTHER_MARKS_COLUMN_1 = cursor.getString(cursor.getColumnIndexOrThrow("ANIMAL_OTHER_MARKS"));
String PRAG_STATUS_COLUMN_1 = cursor.getString(cursor.getColumnIndexOrThrow("PRAG_STATUS"));
String NUMBER_OF_LACTATION_COLUMN_1 = cursor.getString(cursor.getColumnIndexOrThrow("NUMBER_OF_LACTATION"));
String CURRENT_MILK_COLUMN_1 = cursor.getString(cursor.getColumnIndexOrThrow("CURRENT_MILK"));
String SUM_INSURED_COLUMN_1 = cursor.getString(cursor.getColumnIndexOrThrow("SUM_INSURED"));
dataModel.setAnimal_id(NEW_ANIMAL_ID);
dataModel.setFarmer_id(FARMER_ID_1);
dataModel.setTag_no(TAG_COLUMN_1);
dataModel.setEar_position(ANIMAL_EAR_POSITION_COLUMN_1);
dataModel.setAnimal_species(ANIMAL_SPECIES_COLUMN_1);
dataModel.setAnimal_breed(ANIMAL_BREED_COLUMN_1);
dataModel.setBody_color(ANIMAL_BODY_COLOR_COLUMN_1);
dataModel.setShape_right(ANIMAL_SHAPE_RIGHT_COLUMN_1);
dataModel.setShape_left(ANIMAL_SHAPE_LEFT_COLUMN_1);
dataModel.setTail_switch(ANIMAL_SWITCH_OF_TAIL_COLUMN_1);
dataModel.setAge(AGE_COLUMN_1);
dataModel.setOther_marks(ANIMAL_OTHER_MARKS_COLUMN_1);
dataModel.setPrag_status(PRAG_STATUS_COLUMN_1);
dataModel.setLactations(NUMBER_OF_LACTATION_COLUMN_1);
dataModel.setMilk_qty(CURRENT_MILK_COLUMN_1);
dataModel.setSum_insured(SUM_INSURED_COLUMN_1);
dataModel.setTag_photo(Utils.getBitmapFromByte(cursor.getBlob(cursor.getColumnIndex("TAG_IMAGE"))));
dataModel.setHead_photo(Utils.getBitmapFromByte(cursor.getBlob(cursor.getColumnIndex("HEAD_IMAGE"))));
dataModel.setLeft_photo(Utils.getBitmapFromByte(cursor.getBlob(cursor.getColumnIndex("LEFT_SIDE_IMAGE"))));
dataModel.setRight_photo(Utils.getBitmapFromByte(cursor.getBlob(cursor.getColumnIndex("RIGHT_SIDE_IMAGE"))));
dataModel.setSwitch_Tail_Photo(Utils.getBitmapFromByte(cursor.getBlob(cursor.getColumnIndex("TAIL_IMAGE_1"))));
stringBuffer.append(dataModel);
data.add(dataModel);
} while (cursor.moveToNext());
}
return data;
}
Заранее благодарю вас!!!
Комментарии:
1. Какая-либо ошибка в журналах? Вы добавили этот столбец позже? Если да, то удалите сборку и переустановите ее.
2. Используйте этот ПОРЯДОК ВЫБОРА * ИЗ ANIMAL_SYNC_TABLE По NEW_ANIMAL_ID DESC
3. этот столбец не добавлен со всеми столбцами
4. @MohammadAsheri пустой массив[]
5. Запишите это значение cursor.getCount(); и проверьте, сколько записей содержит cursor?
Ответ №1:
Будете ли вы изменять свой код с:
if (cursor.moveToFirst()) {
do {
dataModel = new DataModel();
....
} while (cursor.moveToNext());
}
к этому:
while(cursor.moveToNext())
{
dataModel = new DataModel();
...
data.add(dataModel);
}
Комментарии:
1. Log : for (DataModel mo : данные) { Log.e(«DataModel», «» mo.getSwitch_Tail_Photo()); } E/ data: [ ]
2. Можете ли вы опубликовать код, в котором вы создали базу данных?
3. Код обновлен @MRah
4. что вы храните в getSwitch_Tail_Photo добавьте код класса DataModel
5. TAIL_IMAGE_1 в getSwitch_Tail_Photo, чтобы проверить, извлекается изображение или нет @SurajVaishnav
Ответ №2:
Измените свой запрос на этот
SELECT * FROM ANIMAL_SYNC_TABLE ORDER BY NEW_ANIMAL_ID DESC
чем проверять, все ли еще существует проблема, чем использовать приложение downlaod по этой ссылке и открыть свою базу данных
в этом приложении на вашем ПК
они запускают ваш запрос на вкладке execute sql и проверяют, правильный запрос или нет
Комментарии:
1. sqliteviewer.flowsoft7.com Я использую это для проверки SQL-запроса, но он работает нормально, но проблема только в коде Android
2. можете ли вы прислать мне свой файл db «sejpalpavan@gmail.com »
3. отправлено письмо, брат и спасибо
4. да, запрос правильный убедитесь, что у вас есть последняя копия вашей базы данных в папке assets и имя ключа правильное в функции, из которой вы извлекаете данные
5. ya brother все обновлено, но по-прежнему не найдено решения или проблемы, что конкретно происходит не так в коде
Ответ №3:
База данных SQLITE имеет ограниченную поддержку больших двоичных объектов (BLOBS). Существует ограничение в 1 мегабайт для каждой строки данных, и база данных использует нулевые байты для разделения столбцов в хранилище. … Содержит ссылку на отдельную таблицу больших двоичных объектов.