Несовместимые типы данных (hypersql)

#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;