#java #jdbc #hsqldb #jdbc-odbc
#java #jdbc #hsqldb #jdbc-odbc
Вопрос:
Почему я должен получать ошибку несовместимых типов данных?
int blockSize = 100;
String city="London";
" select * from"
"("
" select l.* from lottotable as l where l.city='" city "' and l.date< cast('" date "' as date) order by l.date desc "
")"
" order by date asc limit CONVERT(" blockSize ", SQL_INTEGER )"
Ошибка:
java.sql.SQLSyntaxErrorException
: несовместимый тип данных в работе: ; в инструкции LIMIT, OFFSET или FETCH in [ выберите * from( выберите l.* из lottotable как l, где l.city=’Лондон’ и l.date< приведение (‘2018-9-21’ в качестве даты) порядок по l.date desc ) порядок по дате asc преобразование предела (100, SQL_INTEGER )]
Derby завершает работу в обычном режиме
обновление: структура таблицы очень проста LOTTOTABLE (ДАТА, ГОРОД, P1, P2, P3, P4, P5); от p1 до p5 являются целыми числами, дата имеет тип date, а город — varchar
Комментарии:
1. Не очень знаком с Java (я пришел сюда, потому что изначально это было помечено как «MySQL»), но я бы предположил, что публикация вашей структуры таблицы может помочь.
2. Почему
limit CONVERT(100, SQL_INTEGER )
вместо простоlimit 100
…?3. ограничить ПРЕОБРАЗОВАНИЕ (» Размер блока «, SQL_INTEGER )», размер блока — передаваемая переменная, сначала проверьте код, а затем ошибку…
4. Я спрашиваю, почему вы думаете, что вам вообще нужна функция CONVERT.
Ответ №1:
Измените запрос, как предложено в комментариях:
int blockSize = 100;
String city="London";
String queryText =
" select * from"
"("
" select l.* from lottotable as l where l.city='" city "' and l.date< cast('" date "' as date) order by l.date desc "
")"
" order by date asc limit " blockSize;