Question

Je commence à utiliser JDBC + MySQL.

J'ai plusieurs valeurs 1/0 que je veux coller dans une base de données avec un PreparedStatement. La colonne de destination est un BIT (M! = 1). Je ne sais pas exactement quelle méthode setXXX utiliser. Je peux trouver les références des données qui sortent aussi facilement, mais la façon dont elles sont écrites m’échappe.

Les valeurs vivent comme une collection ordonnée de booléens dans les objets utilisés par l'application. De plus, je vais occasionnellement importer des données à partir de fichiers texte plats avec des caractères 1/0.

Était-ce utile?

La solution

Pour définir une colonne BIT (M) dans MySQL

Pour M == 1

setBoolean(int parameterIndex, boolean x)

À partir du javadoc

  

Définit le paramètre désigné sur le   étant donné la valeur booléenne Java. Le conducteur   convertit cela en une valeur SQL BIT lorsque   il l'envoie à la base de données.

Pour M> 1

La prise en charge de BIT (M) M! = 1 pose problème avec JDBC, car BIT (M) est uniquement requis avec " ; complet " SQL-92 et seulement quelques bases de données le supportent.

Vérifiez ici Mappage des types SQL et Java : 8.3.3 BIT

Ce qui suit fonctionne pour moi avec MySQL (au moins avec MySQL 5.0.45, Java 1.6 et MySQL Connector / J 5.0.8)

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

Ceci utilise la syntaxe spéciale b'110101010 'de MySQL pour définir la valeur des colonnes BIT.

Autres conseils

Vous pouvez utiliser get / setObject avec un tableau d'octets (byte []). 8 octets sont condensés dans chaque octet, le bit le moins significatif se trouvant dans le dernier élément du tableau.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top