Domanda

Sono nuovo ad usare JDBC + MySQL.

Ho diversi valori 1/0 che voglio inserire in un database con un PreparedStatement. La colonna di destinazione è un BIT (M! = 1). Non sono chiaro su quale dei metodi setXXX usare. Riesco a trovare i riferimenti per quali dati vengono emessi abbastanza facilmente, ma il modo in cui vengono inseriti mi sfugge.

I valori vivono effettivamente come una raccolta ordinata di booleani negli oggetti utilizzati dall'applicazione. Inoltre, occasionalmente importerò i dati da file di testo semplici con 1/0 caratteri.

È stato utile?

Soluzione

Per impostare una colonna BIT (M) in MySQL

Per M==1

setBoolean(int parameterIndex, boolean x)

Dal javadoc

  

Imposta il parametro designato su   dato valore booleano Java. L'autista   converte questo in un valore BIT SQL quando   lo invia al database.


Per M > 1

Il supporto per BIT (M) dove M! = 1 è problematico con JDBC poiché BIT (M) è richiesto solo con " ; completo " SQL-92 e solo pochi DB lo supportano.

Controlla qui Mappatura di tipi SQL e Java : 8.3.3 BIT

Quanto segue funziona per me con MySQL (almeno con 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");
...

Utilizza la speciale sintassi b'110101010 'di MySQL per impostare il valore per le colonne BIT.

Altri suggerimenti

È possibile utilizzare get / setObject con un array di byte (byte []). 8 bit sono impacchettati in ogni byte con il bit meno significativo nell'ultimo elemento dell'array.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top