Длинный тип с SQLite и драйвером Zentus Jdbc - PullRequest
1 голос
/ 29 июля 2010

Я использую SQLite в коде Java через Zentus .

Мне нужно отобразить тип примитива Java long в моей базе данных. Для этого я попытался создать таблицы со следующим утверждением: CREATE TABLE MY TABLE (...., LONG time, ...).

Вставка в базу данных через Java с Zentus работает отлично, но при извлечении данных, всегда через Java и Zentus, значение LONG уменьшается до 32-разрядного значения.

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

Некоторые из вас уже сталкивались с такими проблемами, и как вы решили их?

1 Ответ

1 голос
/ 29 июля 2010

SQLite имеет 4 примитивных типа:

  • Текст * * 1004
  • Integer
  • Real
  • Blob

Некоторые ключевые слова преобразуются в эти типы, неизвестные ключевые слова по умолчанию - текст. Тип Integer немного специфичен, так как SQLite сохраняет только минимальный размер, необходимый для записи наибольшего числа. Если ваше наибольшее число меньше 2 ^ 31, оно будет записано в 32 битах. Я не знаю, что он сжимается обратно, если он расширяется до 64 бит, то все значения выше 2 ^ 31 удаляются, или если он просто остается неизменным. Это определенно сократится, если база данных будет пылесосить.

Я могу предложить сохранить фиктивную запись с 64-битным значением, попробуйте и посмотрите, будет ли JDBC вести себя после этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...