Pregunta

Soy nuevo en el uso de JDBC + MySQL.

Tengo varios valores 1/0 que quiero pegar en una base de datos con un PreparedStatement. La columna de destino es un BIT (M! = 1). No tengo claro cuál de los métodos setXXX usar. Puedo encontrar las referencias de los datos que se publican con la misma facilidad, pero el modo en que se introducen me está eludiendo.

Los valores viven efectivamente como una colección ordenada de booleanos en los objetos utilizados por la aplicación. Además, ocasionalmente importaré datos de archivos de texto plano con caracteres 1/0.

¿Fue útil?

Solución

Para establecer una columna BIT (M) en MySQL

Para M==1

setBoolean(int parameterIndex, boolean x)

Desde el javadoc

  

Establece el parámetro designado a   dado un valor booleano de Java. El conductor   convierte esto a un valor BIT de SQL cuando   lo envía a la base de datos.


Para M > 1

El soporte para BIT (M) donde M! = 1 es problemático con JDBC ya que BIT (M) solo se requiere con " ; completo " SQL-92 y solo unas pocas bases de datos lo admiten.

Marque aquí Mapeo de SQL y tipos de Java : 8.3.3 BIT

Lo siguiente me funciona con MySQL (al menos con MySQL 5.0.45, Java 1.6 y MySQL Connector / J 5.0.8)

...
PreparedStatement insert = con.prepareStatement(
    "INSERT INTO bittable (bitcolumn) values (b?)"
);
insert.setString(1,"111000");
...

Esto utiliza la sintaxis especial b'110101010 'de MySQL para establecer el valor de las columnas BIT.

Otros consejos

Puede usar get / setObject con una matriz de bytes (byte []). Se empaquetan 8 bits en cada byte con el bit menos significativo en el último elemento de la matriz.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top