Sto cercando di inserire alcuni dati binari in un database MySQL senza utilizzare istruzioni preparate. La ragione di ciò è che concatenare migliaia di istruzioni in un singolo inserto e una sola esecuzione. (Esattamente come il MySQL discarica & opere di importazione)Inserimento di dati binari in MySQL (senza PreparedStatement's)
Ho provato le seguenti dichiarazioni, ma la sono tutti fallendo:
INSERT INTO VALORI my_table (1, 'g = F |} X', 2);
INSERIRE IN my_table VALORI (1, CAST ('g = F | } X ' COME BINARIO), 2);
INSERIRE IN my_table VALORI (1, CONVERT ('g = F | } X ', BINARY), 2);
INSERT INTO VALORI my_table (1, BINARIO 'g = F |} X', 2)
L'errore che ottengo è:
troncamento dei dati:: com.mysql.jdbc.MysqlDataTruncation dati troppo lungo per la colonna 'binary_data' alla riga 1
il codice che uso per eseguire l'istruzione è semplicemente:
conn.createStatement(). ExecuteUpdate (sql);
PreparedStatements funzionano bene (ma sono troppo lenti in questo caso)
la stringa effettiva che nel database viene visualizzato un po differet:
g = ÷ di | ¸} X £ ì [
Binary Vista: 67 3d 81 f7 f3 19 46 7c 7d b8 58 8c 10 a3 ec 5b
Java Byte: 103, 61, -127, -9, 25, -13, 70, 124, -72, 125, 88, -116, 16, -93, -20, 91
Potrebbe essere qualcosa a che fare con la codifica?
Eventuali suggerimenti molto apprecaited, Ro
dati binari possono essere inseriti soltanto attraverso '' PreparedStatement' OR CallableStatement' e non possibile usando semplice 'Statement'. –
Sai che l'ottimizzazione che hai fatto è probabilmente senza valore? Il punto delle affermazioni preparate è che sono "precompilate" da MySQL e si limitano a fornire a MySQL i parametri. Sia che si concatenano dichiarazioni o no, si inviano comunque migliaia di valori. E naturalmente, questo si è rivelato un problema poiché non è possibile inserire facilmente dati binari. –
Come stai generando le tue istruzioni 'INSERT'? La codifica probabilmente conta, ma devi anche preoccuparti di eseguire correttamente l'escape (ad esempio se i dati binari hanno un '' 'in esso). Controlla anche il tuo JDBC [parametri di connessione] (http://dev.mysql.com/doc/refman/5.5/en/connector-j-reference-configuration-properties.html), come 'useUnicode' e' characterEncoding '? –