Kann nicht einfügen, byte[] in MySQL mit java
Folgenden ist der code, den ich verwendet habe:
byte[] bkey = key.getEncoded();
String query = "INSERT INTO keytable (name, key) VALUES (?,?)";
PreparedStatement pstmt = (PreparedStatement) connection.prepareStatement(query);
pstmt.setString(1, "test");
pstmt.setBytes(2, bkey);
pstmt.execute();
Und folgende Fehlermeldung bekam ich:
com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'key) VALUES ('test',_binary'?ʾ??s??u\'?}p?u')' at line 1
Ich habe MySQL 5.0.41 und mysql-connector-java-5.1.7-bin.jar
als JDBC-Bibliothek.
Ist jemand kann mir helfen hier?
Vielen Dank im Voraus!
was datatype 'Schlüssel'?
Können Sie eine "beschreiben, <tablename>" auf den Tisch und zeige uns die Ausgabe, damit wir wissen, was Spaltentypen, die Sie zu tun?
Können Sie eine "beschreiben, <tablename>" auf den Tisch und zeige uns die Ausgabe, damit wir wissen, was Spaltentypen, die Sie zu tun?
InformationsquelleAutor | 2009-08-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das problem ist, dass deine Spalte "Schlüssel" ist ein reserve-Wort in SQL. Umgeben Sie es mit backticks und die Dinge funktionieren sollte. Besser noch, betrachten Sie die Umbenennung der Spalte etwas, das nicht ist eine SQL-reserve-Wort. Ich habe bewiesen, dass dies mit dem folgenden code:
MySQL-Tabelle:
Java-code:
InformationsquelleAutor Asaph
Versuchen Sie es mit "setBinaryStream()" anstelle von "setBytes ()" und übergeben Sie es einem ByteArrayInputStream gebaut auf Ihrem byte-array. Dies setzt natürlich Voraus, dass der Datentyp der Spalte zugeordnet speichern kann bytes... Stellen Sie sicher, es ist ein BLOB, BINARY oder VARBINARY.
Nutzen Sie auch backticks einschließen, die Ihre Objekte. "key" ist ein SQL Schlüsselwort und die andere als das, es ist nur eine gute Angewohnheit:
Aktualisiert mit einem anderen Vorschlag.
InformationsquelleAutor Jonathan
Sollten Sie einen binären Datenstrom. Sie haben Zugriff auf den inputstream ?? wie diese..
input.available()
nicht zurück die Länge.InformationsquelleAutor Rodrigo Asensio