recherche

Maison  >  Questions et réponses  >  le corps du texte

java中jdbc/sql出现编码问题

com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: Unknown column '???è??é“?è??' in 'field list'

at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:936)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2985)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1631)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1723)
at com.mysql.jdbc.Connection.execSQL(Connection.java:3277)
at com.mysql.jdbc.Statement.executeUpdate(Statement.java:1402)
at ...

我其他地方以及传进SQL里面的参数的编码都没有问题,就是执行jdbc中的executeUpdate()方法执行sql插入数据时就出现这个问题。
比如:
String book_name = request.getParameter("book_name");//中文显示正常
String sql = "insert into shopping_car(name,book_name) values("123",book_name)";//编码显示正常,为中文
stmt.executeUpdate(sql);//执行该方法的时候就出现上面的乱码错误

PHPzPHPz2812 Il y a quelques jours777

répondre à tous(6)je répondrai

  • 巴扎黑

    巴扎黑2017-04-17 17:48:25

    Envoyez d'abord une commande SQL "set names utf8" spécifiant le jeu de caractères, puis effectuez l'opération d'insertion.

    répondre
    0
  • PHP中文网

    PHP中文网2017-04-17 17:48:25

    Quel est le jeu de caractères de votre serveur de base de données ? Exécutez la commande suivante sur le serveur de base de données pour vérifier le jeu de caractères :

    SHOW VARIABLES LIKE 'CHAR%';

    Terminé, définissez le jeu de caractères des données soumises par le client pour qu'il soit le même que le jeu de caractères du serveur de base de données...

    répondre
    0
  • ringa_lee

    ringa_lee2017-04-17 17:48:25

    D'accord, il s'avère que dans l'opération jdbc originale, la chaîne doit être placée entre guillemets simples

    répondre
    0
  • 迷茫

    迷茫2017-04-17 17:48:25

    Il est recommandé que le serveur de base de données MySQL et le client utilisent l'encodage UTF-8. La façon de définir l'encodage du serveur MySQL et l'URL de connexion du client est similaire à ce qui suit :

    .
    url="jdbc:mysql://localhost:3306/test?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8"
    

    Référence : URL JDBC pour la configuration MySQL afin d'utiliser le codage de caractères utf8

    répondre
    0
  • PHPz

    PHPz2017-04-17 17:48:25

    String sql = "insérer dans les valeurs shopping_car(name,book_name) (?,?)";
    stmt.setString(1, "123");
    stmt.setString(2, book_name);

    répondre
    0
  • 迷茫

    迷茫2017-04-17 17:48:25

    Il n'est pas recommandé d'utiliser SQL de cette manière, car l'injection SQL est facile à réaliser. Il est recommandé d'utiliser une autre méthode d'espace réservé, ou ORM, telle que mybatis, hibernate, etc.
    Correction :

    String sql = "insert into shopping_car(name,book_name) values(\"123\","+book_name+")"

    répondre
    0
  • Annulerrépondre