Rumah > Soal Jawab > teks badan
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);//执行该方法的时候就出现上面的乱码错误
巴扎黑2017-04-17 17:48:25
Mula-mula hantar arahan sql "set names utf8" menyatakan set aksara, dan kemudian lakukan operasi sisipan.
PHP中文网2017-04-17 17:48:25
Apakah set aksara pelayan pangkalan data anda? Jalankan arahan berikut pada pelayan pangkalan data untuk menyemak set aksara:
SHOW VARIABLES LIKE 'CHAR%';
Selesai, tetapkan set aksara data yang diserahkan oleh klien agar sama dengan set aksara pelayan pangkalan data...
ringa_lee2017-04-17 17:48:25
Baiklah, ternyata dalam operasi jdbc asal, rentetan mesti disertakan dalam petikan tunggal
迷茫2017-04-17 17:48:25
Adalah disyorkan bahawa kedua-dua pelayan pangkalan data MySQL dan pelanggan menggunakan pengekodan UTF-8
Cara menetapkan pengekodan pelayan MySQL dan URL sambungan pelanggan adalah serupa dengan yang berikut:
url="jdbc:mysql://localhost:3306/test?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8"
Rujukan: url JDBC untuk konfigurasi MySQL untuk menggunakan pengekodan aksara utf8
PHPz2017-04-17 17:48:25
String sql = "insert into shopping_car(name,book_name) values(?,?)";
stmt.setString(1, "123");
stmt.setString(2, book_name);
迷茫2017-04-17 17:48:25
Tidak digalakkan untuk menggunakan sql dengan cara ini, kerana suntikan sql mudah berlaku Adalah disyorkan untuk menggunakan kaedah ruang letak lain, atau ORM, seperti mybatis, hibernate, dll.
Pembetulan:
String sql = "insert into shopping_car(name,book_name) values(\"123\","+book_name+")"