JDBC, MySQL: Spalte in ein bisschen (m! = 1) bekommen
-
05-07-2019 - |
Frage
Ich bin neu in der Verwendung von JDBC + Mysql.
Ich habe mehrere 1/0 -Werte, die ich mit einem vorbereiteten Anschluss in eine Datenbank festhalten möchte. Die Zielspalte ist ein bisschen (m! = 1). Ich bin mir unklar, welche der SETXXX -Methoden verwendet werden sollen. Ich kann die Referenzen dafür finden, was Daten so leicht genug herauskommen, aber wie sie hineingeht, entgeht mir.
Die Werte leben effektiv als geordnete Sammlung von Booleschen in den von der Anwendung verwendeten Objekte. Außerdem importiere ich gelegentlich Daten aus flachen Textdateien mit 1/0 Zeichen.
Lösung
Zu setzen a BIT(M)
Spalte in MySQL
Zum M==1
setBoolean(int parameterIndex, boolean x)
Aus dem Javadoc
Legt den angegebenen Parameter auf den angegebenen Java -Booleschen Wert fest. Der Treiber konvertiert dies in einen SQL -Bitwert, wenn er ihn an die Datenbank sendet.
Zum M>1
Die Unterstützung für BIT(M)
wo M!=1
ist problematisch mit JDBC als BIT(M)
ist nur mit "vollen" SQL-92 benötigt und nur wenige DBs unterstützen dies.
Überprüfe hier Mapping SQL- und Java -Typen: 8.3.3 Bit
Das Folgende funktioniert für mich mit MySQL (zumindest mit MySQL 5.0.45, Java 1.6 und MySQL Connector/J 5.0.8)
...
PreparedStatement insert = con.prepareStatement(
"INSERT INTO bittable (bitcolumn) values (b?)"
);
insert.setString(1,"111000");
...
Dies verwendet die spezielle B'1101010 '-Syntax von MySQL, um den Wert für Bitspalten festzulegen.
Andere Tipps
Sie können Get/setObject mit einem Byte -Array (Byte []) verwenden. 8 Bit werden in jedes Byte gepackt, wobei das am wenigsten signifikante Bit im letzten Array -Element liegt.