展会信息港展会大全

java学习笔记1-Eclipse和Mysql连接,中文不显示问题
来源:互联网   发布日期:2016-01-14 14:21:01   浏览:1173次  

导读:最近学习java过程中,遇到了一些数据库连接,中文显示成“?”的问题,自己查了下网上的帖子,鼓弄出来了,这里总结一下,给大家分享。首先,确定Mysql是否能正确显示中文:...

最近学习java过程中,遇到了一些数据库连接,中文显示成“?”的问题,自己查了下网上的帖子,鼓弄出来了,这里总结一下,给大家分享。

首先,确定Mysql是否能正确显示中文:

这里检测方式,用界面华工具或者windows的“运行”命令都行,此处楼主用“运行”方式检测

运行-mysql -u 这个后面填用户名 -p这个后面填密码,回车;

[cpp]

create database zjw;

use zjw;

create table admin

(

name varchar(30),

password varchar(30)

)ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

create database zjw;

use zjw;

create table admin

(

name varchar(30),

password varchar(30)

)ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;插入数据:insert into admin values('庄','1234');

显示:select*from admin;

如果显示的结果,汉字处是?,则证明数据库存储汉字有问题。

解决办法:输入show variables like '%character%';

Set character_set_client=utf-8;

Set character_set_results=utf-8;

博主因为已经修改,所以截图已经显示utf-8了。

此时尝试insert刚才的插入语言,能正确显示了吧。

但是,这个时候,有可能遇到另一种情况,就是能在Mysql里面正确存储中文,但是在Eclipse里面进行连接Mysql时候,插入操作插入的中文还是?。比如:

[cpp]

public class Test {

public static void main(String[] args) {

Database db=new Database();

String sql="insert into admin1(id,name,password) values(4,'庄','12345')";

boolean f=db.update(sql);

if(f){

System.out.println("succ");

}

else{

System.out.println("fail");

}

String sql2="select * from admin1";

ResultSet rs=db.query(sql2);

try {

while(rs.next()){

System.out.println(rs.getInt("id")+"--->"+rs.getString("name"));

}

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

public class Test {

public static void main(String[] args) {

Database db=new Database();

String sql="insert into admin1(id,name,password) values(4,'庄','12345')";

boolean f=db.update(sql);

if(f){

System.out.println("succ");

}

else{

System.out.println("fail");

}

String sql2="select * from admin1";

ResultSet rs=db.query(sql2);

try {

while(rs.next()){

System.out.println(rs.getInt("id")+"--->"+rs.getString("name"));

}

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}Eclipse输出的是:

succ

4--->?

此时出现这种情况,很可能是你在与Mysql连接时,为指定编码格式。

请在连接的时候,加入编码格式:"?useUnicode=true&characterEncoding=utf-8";(下面红字部分)

[cpp]

//负责完成数据库的连接及操作

public class Database {

//建立连接

private final String DRIVER_STR="com.mysql.jdbc.Driver";

//加载驱动

private final String CONN_STR="jdbc:mysql://127.0.0.1:3306/zjw<SPAN style="COLOR: #ff6666">?useUnicode=true&characterEncoding=utf-8</SPAN>";

private final String USER="root";

private final String PASSWORD="123456";

private Connection conn=null;

public Database(){

try {

Class.forName(DRIVER_STR);

conn=DriverManager.getConnection(CONN_STR, USER, PASSWORD);

} catch (ClassNotFoundException e) {

e.printStackTrace();

} catch (SQLException e) {

e.printStackTrace();

}

}

//增删改

public boolean update(String sql){

Statement st;

try {

st = conn.createStatement();

int n=0;

n=st.executeUpdate(sql);

if(n>0)

return true;

} catch (SQLException e) {

e.printStackTrace();

}

return false;

}

//查询

public ResultSet query(String sql){

Statement st=null;

ResultSet rs=null;

try {

st = conn.createStatement();

rs=st.executeQuery(sql);

} catch (SQLException e) {

e.printStackTrace();

}

return rs;

}

//关闭数据库

public void close(){

try {

conn.close();

} catch (SQLException e) {

e.printStackTrace();

}

}

}

//负责完成数据库的连接及操作

public class Database {

//建立连接

private final String DRIVER_STR="com.mysql.jdbc.Driver";

//加载驱动

private final String CONN_STR="jdbc:mysql://127.0.0.1:3306/zjw?useUnicode=true&characterEncoding=utf-8";

private final String USER="root";

private final String PASSWORD="123456";

private Connection conn=null;

public Database(){

try {

Class.forName(DRIVER_STR);

conn=DriverManager.getConnection(CONN_STR, USER, PASSWORD);

} catch (ClassNotFoundException e) {

e.printStackTrace();

} catch (SQLException e) {

e.printStackTrace();

}

}

//增删改

public boolean update(String sql){

Statement st;

try {

st = conn.createStatement();

int n=0;

n=st.executeUpdate(sql);

if(n>0)

return true;

} catch (SQLException e) {

e.printStackTrace();

}

return false;

}

//查询

public ResultSet query(String sql){

Statement st=null;

ResultSet rs=null;

try {

st = conn.createStatement();

rs=st.executeQuery(sql);

} catch (SQLException e) {

e.printStackTrace();

}

return rs;

}

//关闭数据库

public void close(){

try {

conn.close();

} catch (SQLException e) {

e.printStackTrace();

}

}

}

赞助本站

人工智能实验室

相关热词: java 教程

AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港