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.

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top