Impossible d'insérer le byte[] dans MySQL à l'aide de java
Voici le code que j'ai utilisé:
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();
Et à la suite est une erreur que j'ai:
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
J'ai MySQL 5.0.41 et mysql-connector-java-5.1.7-bin.jar
que JDBC de la bibliothèque.
Est ce que quelqu'un peut m'aider ici?
Merci à l'avance!
ce type de données est la "clef"?
Pouvez-vous faire un "décrire <nom de la table>" sur votre table et de nous montrer la sortie de sorte que nous savons quels types de colonnes, vous avez affaire?
Pouvez-vous faire un "décrire <nom de la table>" sur votre table et de nous montrer la sortie de sorte que nous savons quels types de colonnes, vous avez affaire?
OriginalL'auteur | 2009-08-24
Vous devez vous connecter pour publier un commentaire.
Le problème, c'est que votre colonne appelée "clé" est une réserve mot en SQL. L'entourer de backticks et les choses devraient fonctionner. Mieux encore, envisager de renommer la colonne à quelque chose qui n'est pas un SQL réserve mot. Je vous ai prouvé cela à l'aide du code ci-dessous:
Table MySQL:
De code Java:
OriginalL'auteur Asaph
Essayez d'utiliser "setBinaryStream()" au lieu de "setBytes()", et de passer à un ByteArrayInputStream construit sur votre tableau d'octets. Bien entendu, cela suppose que le type de données affecté à la colonne peut stocker des octets... assurez-vous que c'est un BLOB BINARY ou VARBINARY.
Aussi, l'utilisation backticks à joindre vos objets. "key" est un mot clé SQL, et d'autres que c'est juste une bonne habitude:
Mise à jour avec une autre suggestion.
OriginalL'auteur Jonathan
Vous devez ajouter un flux binaire. Avez-vous accès à l'inputstream ?? comme cela..
input.available()
n' pas de retour de la longueur.OriginalL'auteur Rodrigo Asensio