Это была длинная битва между mysql и sql lite датой. У меня сложный запрос, который возвращает несколько данных.SQL Lite-запрос читает неверный идентификатор
Я прочитал серверные объекты Json и сохранил их в sql lite android. Так я сделал запрос, который, как показано ниже один
"SELECT * FROM" + MAIN_TABLE + "LEFT OUTER JOIN" + SERVICE_INFO_TABLE + "ON ServiceInfo.main_id = MAIN_TABLE._ID" + "LEFT OUTER JOIN" + M_USER_TABLE + "в M._ID = ServiceInfo.m_id" + "LEFT OUTER JOIN" + U_TABLE + "в MAIN_TABLE.u_id = U_TABLE._ID"
проблема начинается, когда я прочитал MAIN_TABLE, который содержит CREATION_TIME и upation_time, SERVICE_INFO_TABLE также содержит create_time, updation_time.
Однако таблица содержит разные даты и время соответственно. Курсор возвращает те же дату и время для всей сущности.
Кажется, что метод курсора запутался и возвращает те же данные и время, которые читаются из таблицы ServiceInfo.
Я копаю глубже в режим отладки, в то время как SQL Lite читает запрос, я видел странные вещи, происходящие там. Ниже приведен пример чтения
Cursor cursor = sqLiteDatabase.rawQuery(selectQuery, null);
if (cursor != null && cursor.getCount() > 0) {
cursor.moveToFirst();
do {
Log.d("dummy", "dummy stopper");
VParcelable vParcelable = new VParcelable();
vParcelable.setId(cursor.getInt(cursor.getColumnIndex(VEntry._ID)));
vParcelable.setModel(cursor.getString(cursor.getColumnIndex(VEntry.MODEL)));
vParcelable.setYearMdl(cursor.getInt(cursor.getColumnIndex(VEntry.YEAR_MODEL)));
vParcelable.setCreationTime(cursor.getString(cursor.getColumnIndex(VEntry.CRE_TIME)));
vParcelable.setUpdationTime(cursor.getString(cursor.getColumnIndex(VEntry.UPA_TIME)));
Таким образом, таблица ServiceInfo также содержит то же время создания и время updation_time.
vParcelable.setCreationTime (cursor.getString (cursor.getColumnIndex (VEntry.CRE_TIME)));
mКолонки из режима отладки курсора показывают «updation_time» и «creation_time» для VTable и то же, что и для таблицы ServiceInfo.
Эта проблема sql lite не может различать имена столбцов таблицы?
Это действительно отстой.
Помогите пожалуйста.
Благодаря
Проблема решена путем переименования имен столбцов. –
Обратите внимание, что SQL lite android считывает идентификатор таблицы столбцов как группу. Если у вас несколько таблиц и идентификаторы Entry похожи, SQL lite запутается. –