java连接数据库读取数据出现乱码
因为这是通用编码,像中国通常使用的GBK、GB2312、Big5等只是针对中文而言,但是对其他文字就不适用了,为了使得这个问题的解决具有文字编码通用性,所以我这里设定了UTF8这个编码。
编码一致性涉及到的四个方面为:应用程序编码、数据库系统编码、数据库编码、应用程序与数据库系统的连接编码。
1.mysql的设置,我的系统字符设置是拉丁文,也是够够的,发现之后要记得修改啊
2.java的设置,记得自己在刚开始的时候,设置的是:conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/xsxx","root","123456");
这样在存储的时候,就会出现中文存储的乱码
其实,仅仅需要加上“?characterEncoding=utf8”就能够实现中文的存储。
运行效果如下:
3.代码:
/*****
* java连接mysql
* @author yanlong
*2017/5/7
*/
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
//import java.util.Collection;
import java.sql.SQLException;
//import javax.sql.Statement;
public class TestJDBC {
public static void main(String[] args){
ResultSet rs=null;
Statement stmt=null;
Connection conn=null;
try{
/*加载并注册mysql的JDBC驱动*/
Class.forName("com.mysql.jdbc.Driver");
/*建立到mysql的连接*/
//conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/xsxx","root","123456");
conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/xsxx?characterEncoding=utf8","root","123456");
/*访问数据库,并执行sql语句*/
stmt=conn.createStatement();
/*添加记录*/
System.out.println("添加记录后:");
String sqll="insert into xs value (111111,'小公举','水利工程')";
stmt.executeUpdate(sqll);
rs=stmt.executeQuery("select * from xs");
while(rs.next()){
System.out.println(rs.getInt("id"));
System.out.println(rs.getString("name"));
System.out.println(rs.getString("major"));
}
rs=stmt.executeQuery("select *from xs");
while(rs.next()){
System.out.println(rs.getInt("id"));
System.out.println(rs.getString("name"));
System.out.println(rs.getString("major"));
}
}catch(ClassNotFoundException e){
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try{
if(rs!=null){
rs.close();
rs=null;
}
if(stmt!=null){
stmt.close();
stmt=null;
}
if(conn!=null){
conn.close();
conn=null;
}
}catch(SQLException e){
e.printStackTrace();
}
}
}
}
java连接数据库读取数据出现乱码的更多相关文章
- java连接数据库插入数据中文乱码
解决方案: jdbc连接数据库,向表中插入中文查看数据乱码:修改数据库连接url为jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf-8 注意 ...
- 【转载】java InputStream读取数据问题
原文链接:http://www.cnblogs.com/MyFavorite/archive/2010/10/19/1855758.html 1. 关于InputStream.read() 在 ...
- java InputStream读取数据问题
原文 1. 关于InputStream.read() 在从数据流里读取数据时,为图简单,经常用InputStream.read()方法.这个方法是从流里每次只读取读取一个字节,效率会非常低. ...
- AJPFX总结java InputStream读取数据问题
1. 关于InputStream.read() 在从数据流里读取数据时,为图简单,经常用InputStream.read()方法.这个方法是从流里每次只读取读取一个字节,效率会非常低. ...
- 訪问站点时仅仅是显示主页(index.jsp),没有请求连接数据库读取数据。
两部曲: 1:在你的web.xml中的Struts2的核心过滤器的映射中添加 <filter-mapping> <dispatcher>REQUEST</disp ...
- 使用JAVA API读取HDFS的文件数据出现乱码的解决方案
使用JAVA api读取HDFS文件乱码踩坑 想写一个读取HFDS上的部分文件数据做预览的接口,根据网上的博客实现后,发现有时读取信息会出现乱码,例如读取一个csv时,字符串之间被逗号分割 英文字符串 ...
- Java InputStream读取网络响应Response数据的方法
Java InputStream读取数据问题 原理讲解 1. 关于InputStream.read() 在从数据流里读取数据时,为图简单,经常用InputStream.read()方法.这个方 ...
- 分享非常有用的Java程序(关键代码)(八)---Java InputStream读取网络响应Response数据的方法!(重要)
原文:分享非常有用的Java程序(关键代码)(八)---Java InputStream读取网络响应Response数据的方法!(重要) Java InputStream读取数据问题 ======== ...
- Hbase读取数据
get命令和HTable类的get()方法用于从HBase表中读取数据.使用 get 命令,可以同时获取一行数据.它的语法如下: get ’<table name>’,’row1’ 下面的 ...
随机推荐
- 北航MOOC客户端
我们的团队作业终于完成了,欢迎下载使用我们的北航MOOC手机客户端软件(Android端)——北航学堂,学习北航的公开课程. 安装包下载地址: http://pan.baidu.com/s/1jGvH ...
- 《Linux内核分析》chapter4
- Maven遇到github引用的项目有bug怎么办?
Maven遇到github引用的项目有bug,自己想要修复/作者已经修复了但是还没有版本出来. 一个maven的做法 git clone 该项目(可能直接下载zip比较快). 在项目中mvn inst ...
- <面向对象程序设计>课程作业一
Github链接 在看完这次的作业要求后我整个人是混乱的,因为作业要求把不同的函数放在一个main函数中:我们之前也是进行了函数分离,但是是放在了不同的文件中.如果要改的话相当于重写(而且这两种形式其 ...
- Atcoder D - Knapsack 1 (背包)
D - Knapsack 1 Time Limit: 2 sec / Memory Limit: 1024 MB Score : 100100 points Problem Statement The ...
- zookeeper安装和使用 windows环境(转)
原文地址: http://blog.csdn.net/tlk20071/article/details/52028945 简介 ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是G ...
- 【转】C语言宏高级用法 [总结]
1.前言 今天看代码时候,遇到一些宏,之前没有见过,感觉挺新鲜.如是上网google一下,顺便总结一下,方便以后学习和运用.C语言程序中广泛的使用宏定义,采用关键字define进行定义,宏只是一种简 ...
- 使用Java+Kotlin双语言的LeetCode刷题之路(一)
LeetCode learning records based on Java,Kotlin,Python...Github 地址 序号对应 LeetCode 中题目序号 1 两数之和 给定一个整数数 ...
- Spring注解 开发
- 设备 VMnet0 上的网桥当前未运行。此虚拟机无法与主机或网络中的其他计算机通信。
http://www.cnblogs.com/baihuitestsoftware/articles/4223552.html 因为试用Windows10教育版下的Docker打开过Hyper-V,虽 ...