JDBC, MySQL: получение битов в столбец BIT (M! = 1) - PullRequest
1 голос
/ 21 октября 2009

Я новичок в использовании JDBC + MySQL.

У меня есть несколько значений 1/0, которые я хочу вставить в базу данных с помощью PreparedStatement. Столбец назначения - это бит (M! = 1). Мне неясно, какой из методов setXXX использовать. Я могу найти ссылки на то, какие данные выходят достаточно легко, но как они поступают, ускользает от меня.

Значения фактически живут как упорядоченная коллекция логических значений в объектах, используемых приложением. Кроме того, я иногда буду импортировать данные из текстовых файлов с 1/0 символами.

Ответы [ 2 ]

2 голосов
/ 21 октября 2009

Чтобы установить столбец BIT(M) в MySQL

Для M==1

setBoolean(int parameterIndex, boolean x)

Из Javadoc

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


Для M>1

Поддержка BIT(M), где M!=1 проблематична для JDBC, так как BIT(M) требуется только для «полного» 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.

2 голосов
/ 21 октября 2009

Вы можете использовать get / setObject с байтовым массивом (byte []). 8 бит упакованы в каждый байт, причем младший значащий бит находится в последнем элементе массива.

...