JDBC do MySQL:obtendo bits em um BIT(M!=1) coluna
-
05-07-2019 - |
Pergunta
Estou usando o JDBC + MySQL.
Eu tenho vários 1/0 valores que eu quero ficar em um banco de dados com um PreparedStatement.A coluna de destino é um POUCO(M!=1).Eu estou confusa sobre qual dos métodos setXXX usar.Eu posso encontrar as referências para os dados que vem de fora, como facilmente o suficiente, mas como ele vai está escapando de mim.
Os valores efectivamente viver como um conjunto ordenado de booleanos em objetos usados pelo aplicativo.Além disso, eu vou ser ocasionalmente a importação de dados a partir de arquivos de texto planos com 1/0 caracteres.
Solução
Para definir um BIT(M)
coluna no MySQL
Para M==1
setBoolean(int parameterIndex, boolean x)
A partir do javadoc
Define o parâmetro designado para o dado Java valor booleano.O driver o converte para um BIT do SQL valor quando ele envia-lo para o banco de dados.
Para M>1
O suporte para BIT(M)
onde M!=1
é problemático com JDBC como BIT(M)
é necessário apenas com "full" SQL-92 e apenas alguns DBs suporte.
Confira aqui Mapeamento de SQL e Java Tipos:8.3.3 BITS
A seguir funciona para mim com MySQL (pelo menos com o MySQL 5.0.45, Java 1.6 e MySQL Connector/J 5.0.8)
...
PreparedStatement insert = con.prepareStatement(
"INSERT INTO bittable (bitcolumn) values (b?)"
);
insert.setString(1,"111000");
...
Este usa o especial b "110101010' sintaxe do MySQL para definir o valor para colunas de BITS.
Outras dicas
Você pode usar get/setObject com uma matriz de bytes (byte[]).8 bits são embalados em cada byte com o bit menos significativo, sendo o último elemento da matriz.