Java SQL подготовил оператор для неподписанного int - PullRequest
1 голос
/ 29 февраля 2012

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

setInt () удаляет меня с помощью DataTruncation, если второй параметр выше 2 147 483 647 (Max Signed Int), хотя моя базовая таблица может жевать до 4 294 967 295 (Max Unsigned Int)

Есть ли такая вещь, как setUnsignedInt ()? Должен ли я использовать setLong (), хотя таблица настроена как (INT (10) UNSIGNED)?
Спасибо

Ответы [ 3 ]

4 голосов
/ 29 февраля 2012

Да, вы должны использовать setLong().Вы заметите, что javadocs говорит вам:

Устанавливает для указанного параметра указанное длинное значение Java.Драйвер преобразует это значение SQL BIGINT при отправке в базу данных.

Так что имейте в виду, что это позволит вам установить значение больше 2 ^ 32-1, которое затем будет отклонено.БД (надеюсь; я полагаю, это может обернуть).

2 голосов
/ 29 февраля 2012

Для этого вы используете следующий наименьший тип данных, который будет содержать текущее максимальное (без знака) значение. Для Integer это будет Long. Затем вы можете отменить что-либо выше максимального (без знака) значения для Integer.

Эта публикация прольет свет

1 голос
/ 29 февраля 2012

Как правило, когда вам нужен запас для неподписанного примитива в Java, вы просто переходите на следующий уровень. В твоем случае это длинный.

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