JDBC, MySQL: получение битов в столбец BIT (M! = 1)
-
05-07-2019 - |
Вопрос
Я новичок в использовании JDBC + MySQL.
У меня есть несколько значений 1/0, которые я хочу вставить в базу данных с помощью PreparedStatement. Столбец назначения - это бит (M! = 1). Мне неясно, какой из методов setXXX использовать. Я могу найти ссылки на то, какие данные выходят достаточно легко, но как они поступают, ускользает от меня.
Значения фактически живут как упорядоченная коллекция логических значений в объектах, используемых приложением. Кроме того, я иногда буду импортировать данные из текстовых файлов с 1/0 символами.
Решение
Чтобы установить столбец BIT (M)
в MySQL
Для M == 1
setBoolean(int parameterIndex, boolean x)
Из Javadoc
<Ч>Устанавливает указанный параметр в данное булево значение Java. Водитель преобразует это в значение SQL BIT, когда он отправляет его в базу данных.
Для M > 1
Поддержка BIT (M)
, где M! = 1
проблематична с JDBC, поскольку BIT (M)
требуется только с " ; полный & Quot; SQL-92 и только несколько БД поддерживают это.
Проверьте здесь Сопоставление типов SQL и Java : 8.3.3 BIT
Следующее работает для меня с MySQL (по крайней мере, с MySQL 5.0.45, Java 1.6 и MySQL Connector / J 5.0.8)
...
PreparedStatement insert = con.prepareStatement(
"INSERT INTO bittable (bitcolumn) values (b?)"
);
insert.setString(1,"111000");
...
При этом используется специальный синтаксис b'110101010 'MySQL для установки значения для столбцов BIT.
Другие советы
Вы можете использовать get / setObject с байтовым массивом (byte []). 8 бит упакованы в каждый байт, причем младший значащий бит находится в последнем элементе массива.