Android взрывается, когда я со следующим мы пытаемся использовать базу данных SQLite, которую я создал здесь

#android #sqlite #listview #cursor #listviewitem

#Android #sqlite #listview #курсор #listviewitem

Вопрос:

При попытке создать динамические столбцы я получаю следующую ошибку. Я думал, что это законно, но, видимо, Android и SQLite это не нравится. Я уверен, что мне не хватает чего-то простого, но я просто не могу вспомнить.

Сообщение об ошибке: нет такого столбца: sundayResult: , при компиляции:

 CREATE TABLE DAYSUSED(
                _id INTEGER PRIMARY KEY autoincrement, 
                sunday INTEGER NOT NULL,
                monday INTEGER NOT NULL, 
                tuesday INTEGER NOT NULL, 
                wednesday INTEGER NOT NULL, 
                thursday INTEGER NOT NULL, 
                friday INTEGER NOT NULL, 
                saturday INTEGER NOT NULL);
SELECT _id
           , volume_level
           , vibrate
           , CASE WHEN sunday = 1 THEN 'Sun' ELSE ' ' END AS sundayResult
           , CASE WHEN monday = 1 THEN 'Mon' ELSE ' ' END AS mondayResult
           , CASE WHEN tuesday = 1 THEN 'Tues' ELSE ' ' END AS tuesdayResult
           , CASE WHEN wednesday = 1 THEN 'Wed' ELSE ' ' END AS wednesdayResult
           , CASE WHEN thursday = 1 THEN 'Thur' ELSE ' ' END AS thursdayResult
           , CASE WHEN friday = 1 THEN 'Fri' ELSE ' ' END AS fridayResult
           , CASE WHEN saturday = 1 THEN 'Sat' ELSE ' ' END AS saturdayResult
           , sundayResult || ' ' || mondayResult || ' ' || tuesdayResult || ' ' || wednesdayResult || ' ' || thursdayResult || ' ' || fridayResult || ' ' || saturdayResult || ' ' AS days_of_week
 FROM DAYSUSED
  

Последняя строка сработает, если я выполню прямой вызов фактических столбцов, таких как:

 , sunday || ' ' ||
  

вместо того, что у меня есть в настоящее время, которое:

 , sundayResult || ' ' ||
  

Я просмотрел все и не знаю, что еще попробовать, так как мне действительно хотелось бы изменить данные для курсора.

Спасибо, Келли

Ответ №1:

sundayResult — это просто псевдоним, и вы не можете использовать его в том же запросе. Вам нужно что-то вроде этого. Если volume_level и vibrate поступают из другой таблицы, то соедините их с помощью подзапроса «days»

 SELECT _id
           , volume_level
           , vibrate
           , days.sundayResult || ' ' || days.mondayResult || ' ' || days.tuesdayResult || ' ' || days.wednesdayResult || ' ' || days.thursdayResult || ' ' || days.fridayResult || ' ' || days.saturdayResult || ' ' AS days_of_week
from
(          select
           CASE WHEN sunday = 1 THEN 'Sun' ELSE ' ' END AS sundayResult
           , CASE WHEN monday = 1 THEN 'Mon' ELSE ' ' END AS mondayResult
           , CASE WHEN tuesday = 1 THEN 'Tues' ELSE ' ' END AS tuesdayResult
           , CASE WHEN wednesday = 1 THEN 'Wed' ELSE ' ' END AS wednesdayResult
           , CASE WHEN thursday = 1 THEN 'Thur' ELSE ' ' END AS thursdayResult
           , CASE WHEN friday = 1 THEN 'Fri' ELSE ' ' END AS fridayResult
           , CASE WHEN saturday = 1 THEN 'Sat' ELSE ' ' END AS saturdayResult
           FROM DAYSUSED
) days
  

Комментарии:

1. Большое вам спасибо за помощь. Когда я увидел ваше решение, я начал думать, что мне, возможно, придется выполнить CTE или ПРИСОЕДИНИТЬСЯ.