java中jdbc/sql出现编码问题
PHPz
PHPz 2017-04-17 17:46:25
0
6
821

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);//执行该方法的时候就出现上面的乱码错误

PHPz
PHPz

学习是最好的投资!

répondre à tous(6)
巴扎黑

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

Ty80

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...

左手右手慢动作

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

迷茫

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

PHPzhong

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

迷茫

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+")"
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal