Вопрос

Я новичок в использовании 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 бит упакованы в каждый байт, причем младший значащий бит находится в последнем элементе массива.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top