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

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

学习是最好的投资!

membalas semua(6)
巴扎黑

Mula-mula hantar arahan sql "set names utf8" menyatakan set aksara, dan kemudian lakukan operasi sisipan.

Ty80

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

左手右手慢动作

Baiklah, ternyata dalam operasi jdbc asal, rentetan mesti disertakan dalam petikan tunggal

迷茫

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

PHPzhong

String sql = "insert into shopping_car(name,book_name) values(?,?)";
stmt.setString(1, "123");
stmt.setString(2, book_name);

迷茫

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+")"
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan