问题
jdbc连接mysql ,eclipse上sql中文语句报错
原因
1.mysql数据库未设置为utf8
2.eclipse字符编码未设置为utf-8
3.连接mysql的url,未添加“?characterEncoding=utf-8”
4.未配置mysql默认编码为utf8
解决方法
1.检查要访问的mysql数据库编码,比如我要访问mysql的mysql1数据库:
使用sqlyog或者navicat图形界面化工具打开mysql,我这里用sqlyog。
在要查看的数据库名称上右键->改变表,字符集选为utf8,保存。
2.更改eclipse字符编码设置为utf-8
ecliose如果汉化了的,窗口->首选项->常规->工作空间,右边找 文本文件编码 ,选其他,改为utf8
3.更改代码里的url
实例代码:
package jdbc;
import java.sql.*;
public class jdbc {
public static void main(String[] args) throws Exception {
//url加上?characterEncoding=UTF-8
String url = "jdbc:mysql://localhost:3306/mysql1?characterEncoding=UTF-8";
String user = "root";
String password = "1234";
String sql = "INSERT INTO mytable1(工作,姓名,年龄) VALUE ('机械','明天','15');";
Class.forName("com.mysql.cj.jdbc.Driver");
Connection connection = DriverManager.getConnection(url, user, password);
if(connection!=null)
{
System.out.println("connectiom successful");
Statement statement = connection.createStatement();
int result = statement.executeUpdate(sql);//
System.out.println(result);
}
else {
System.out.println("connection error");
}
}
}
4.设置mysql默认编码为utf8
cmd运行mysql
$mysql -u root -p
Enter password: ****
mysql> show variables like '%char%';
这里character_set_client ,character_set_connection是gbk,要改为utf8.
找MySQL的配置文件
windows操作系统 一般在C:\Program Files (x86)\MySQL\mysql-5.7.31\my.ini
Program Files中没有的话,也可能在隐藏文件C:\Program Data\MySQL中
如果自己安装mysql是更改了安装路径,那一般在配置的mysql安装目录中。
如果下载的mysql是解压版的一般没有这个文件,那就自行创建一个。
在原有文件下添加
[client]
default-character-set=utf8
[mysqld]
default-storage-engine=INNODB
character-set-server=utf8
collation-server=utf8_general_ci
保存后,重启mysql服务
win+r 输入services.msc 确定
找到MYSQL 重新启动此服务
再运行mysql查询
$mysql -u root -p
Enter password: ****
mysql> show variables like '%char%';
发现已经完成更改
配置完成!