찾다
데이터 베이스MySQL 튜토리얼jdbc mysql 中文乱码的解决方法
jdbc mysql 中文乱码的解决方法Jun 07, 2016 pm 03:02 PM
jdbcmysql중국인왜곡된 문자방법해결하다통과하다

通过jdbc 连接mysql 数据库的实例,以及中文乱码的解决方法: import java.sql.*;/** * 使用JDBC连接数据库MySQL的过程: * DataBase: db_test * tables: tab_test; * username: user_test; * passwd: passwd_test; * * @author zhongbo.wzb@alibaba-inc.com

通过jdbc 连接mysql 数据库的实例,以及中文乱码的解决方法:

import java.sql.*;

/**
 * 使用JDBC连接数据库MySQL的过程:
 * DataBase: db_test
 * tables:   tab_test;
 * username: user_test;
 * passwd:   passwd_test;
 *
 * @author  zhongbo.wzb@alibaba-inc.com
 */
public class DBTest {

  public static Connection getConnection() throws SQLException, ClassNotFoundException {
    // 第一步:加载MySQL的JDBC的驱动
    Class.forName("com.mysql.jdbc.Driver");

    //取得连接的url,能访问MySQL数据库的用户名:user_test;密码:passwd_test, 数据库名: db_test
    String url = "jdbc:mysql://localhost:3306/db_test?useUnicode=true&characterEncoding=utf-8";
    String username = "user_test";
    String password = "passwd_test";

    // 第二步:创建与MySQL数据库的连接类的实例
    Connection conn = DriverManager.getConnection(url, username, password);
    return conn;
  }

  public static void main(String args[]) {
    System.out.println("args num: " + args.length);
    for (int i = 0; i 

<p><span>不</span><span><span>过,官方文档还说,"要想覆盖客户端上的自动检测编码功能,可在用于连接到服务器的URL中使用“characterEncoding”属性。" </span></span><br>
</p>
<p><span><span><br>
</span></span></p>
<p><span><span><span>解决方法二: </span><br>
<br>
<span>连接mysql时(无论在从mysql读还是取数据的情况),指定使用的编码方式为utf-8,具体代码如下 </span><br>
<br>
<span>//装载mysql-jdbc驱动 </span><br>
<br>
<span>Class.forName("com.mysql.jdbc.Driver").newInstance(); </span><br>
<br>
<span>//连接数据库 </span><br>
<br>
<span>Connection sqlCon = DriverManager.getConnection( "jdbc:mysql://localhost:3306/test?                         user=root&password=1&useUnicode=true&characterEncoding=utf-8"
 ); </span><br>
</span></span></p>
<br>
<p><br>
</p>
<p><br>
</p>
<p><br>
</p>
<p><br>
</p>
<p><br>
</p>
<p><span>charset 和 collation 有多个级别的设置:服务器级、数据库级、表级、列级和连接级</span><br>
<br>
<span>1.服务器级 </span><br>
<span>  查看设置:show global variables like 'character_set_server'; 和 show global variables like 'collation_server';</span><br>
<span>  修改设置:在OPTION FILE (/etc/mysql/my.cnf)里设置: </span><br>
<span>   [mysqld] </span><br>
<span>    character_set_server=utf8 </span><br>
<span>    collation_server=utf8_general_ci </span><br>
<br>
<span>2. 数据库级 </span><br>
<span>   查看设置:select * from information_schema.schemata where schema_name = 'cookbook';</span><br>
<span>   设置: </span><br>
<span>     1.若没有显式设置,则自动使用服务器级的配置 </span><br>
<span>     2.显式设置:在创建库时指定 </span><br>
<span>       create database playUtf8  DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci;</span><br>
<br>
<span>3.表级 </span><br>
<span>   查看设置:show create table course; </span><br>
<span>   设置: </span><br>
<span>     1.若没有显式设置,则自动使用数据库级的配置 </span><br>
<span>     2.显式设置:在创建表时指定 </span><br>
<span>       create table utf ( id int ) default charset=utf8 default collate=utf8_bin;</span><br>
<br>
<span>4.列级 </span><br>
<span>   查看设置:show create table course; </span><br>
<span>   设置: </span><br>
<span>     1.若没有显式设置,则自动使用表级的配置 </span><br>
<span>     2.显式设置: </span><br>
<br>
<span>     CREATE TABLE Table1(column1 VARCHAR(5) CHARACTER SET latin1 COLLATE latin1_german1_ci);</span><br>
<br>
<span>5.连接级别 </span><br>
<span>  查看设置: </span><br>
<span>     show variables like 'character_set_client';  # 服务端使用这个编码来理解客户端发来的statements </span><br>
<span>     show variables like 'character_set_connection' ; # 我还不知道什么意思,等看了mysql源码再说 </span><br>
<span>     show variables like 'character_set_results'; # 服务端使用这个编码回送结果集和错误信息 </span><br>
<span>  设置: </span><br>
<span>     客户端在连接时可以指定这些参数;同时,服务端也提供了一个Global范围的值,客户端未指定这些参数时,服务端就使用这个Global值。这个global值怎么设置的? 我查遍了很多文档,似乎还没看到设置的办法 (有人说通过my.cnf,或者在启动mysqld时指定命令行参数,其实都是错的)</span><br>
<br>
<span>   </span><br>
<br>
<span>附:connector/j传输SQL时用什么编码? </span><br>
<span>  答案: "The character encoding between client and server is automatically detected upon connection. The encoding
 used by the driver is specified on the server using the character_set_server system variable for server versions 4.1.0 and newer."</span><br>
<span>   也就是说,是在连接时查询服务器端的character_set_server值,再确定连接将使用的编码。 </span><br>
<span>   不</span><span><span>过,官方文档还说,"要想覆盖客户端上的自动检测编码功能,可在用于连接到服务器的URL中使用“characterEncoding”属性。" </span></span><br>
</p>
<p><span><span><br>
</span></span></p>
<p><span><span><span>解决方法二: </span><br>
<br>
<span>连接mysql时(无论在从mysql读还是取数据的情况),指定使用的编码方式为utf-8,具体代码如下 </span><br>
<br>
<span>//装载mysql-jdbc驱动 </span><br>
<br>
<span>Class.forName("com.mysql.jdbc.Driver").newInstance(); </span><br>
<br>
<span>//连接数据库 </span><br>
<br>
<span>Connection sqlCon = DriverManager.getConnection( "jdbc:mysql://localhost:3306/test?                         user=root&password=1&useUnicode=true&characterEncoding=utf-8"
 ); </span><br>
<br>
<br>
</span></span></p>


성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
Java8(291)之后禁用了TLS1.1使JDBC无法用SSL连接SqlServer2008怎么解决Java8(291)之后禁用了TLS1.1使JDBC无法用SSL连接SqlServer2008怎么解决May 16, 2023 pm 11:55 PM

Java8-291之后,禁用了TLS1.1,使JDBC无法用SSL连接SqlServer2008怎么办,以下是解决办法修改java.security文件1.找到jre的java.security文件如果是jre,在{JAVA_HOME}/jre/lib/security中,比如????C:\ProgramFiles\Java\jre1.8.0_301\lib\security如果是Eclipse绿色免安装便携版在安装文件夹搜索java.security,比如????xxx\plugins\org

mysql怎么替换换行符mysql怎么替换换行符Apr 18, 2022 pm 03:14 PM

在mysql中,可以利用char()和REPLACE()函数来替换换行符;REPLACE()函数可以用新字符串替换列中的换行符,而换行符可使用“char(13)”来表示,语法为“replace(字段名,char(13),'新字符串') ”。

mysql怎么将varchar转换为int类型mysql怎么将varchar转换为int类型May 12, 2022 pm 04:51 PM

转换方法:1、利用cast函数,语法“select * from 表名 order by cast(字段名 as SIGNED)”;2、利用“select * from 表名 order by CONVERT(字段名,SIGNED)”语句。

MySQL复制技术之异步复制和半同步复制MySQL复制技术之异步复制和半同步复制Apr 25, 2022 pm 07:21 PM

本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了关于MySQL复制技术的相关问题,包括了异步复制、半同步复制等等内容,下面一起来看一下,希望对大家有帮助。

Java错误:JDBC错误,如何解决和避免Java错误:JDBC错误,如何解决和避免Jun 24, 2023 pm 02:40 PM

随着Java的广泛应用,Java程序在连接数据库时经常会出现JDBC错误。JDBC(JavaDatabaseConnectivity)是Java中用于连接数据库的编程接口,因此,JDBC错误是在Java程序与数据库交互时遇到的一种错误。下面将介绍一些最常见的JDBC错误及如何解决和避免它们。ClassNotFoundException这是最常见的JDBC

Java使用JDBC API连接MySQL数据库遇到的常见问题Java使用JDBC API连接MySQL数据库遇到的常见问题Jun 10, 2023 am 09:55 AM

近年来,Java语言的应用越来越广泛,而JDBCAPI是Java应用程序中与数据库交互的一种创造性方法,JDBC基于一种名为ODBC的开放数据库连接标准,使得Java应用程序能够连入任何数据库管理系统(DBMS)。其中,MySQL更是一款备受青睐的数据库管理系统。然而,连接MySQL数据库时,开发人员也会遇到一些常见问题,本文旨在介绍JDBCAPI连接M

Java如何实现JDBC批量插入Java如何实现JDBC批量插入May 18, 2023 am 10:02 AM

一、说明在JDBC中,executeBatch这个方法可以将多条dml语句批量执行,效率比单条执行executeUpdate高很多,这是什么原理呢?在mysql和oracle中又是如何实现批量执行的呢?本文将给大家介绍这背后的原理。二、实验介绍本实验将通过以下三步进行a.记录jdbc在mysql中批量执行和单条执行的耗时b.记录jdbc在oracle中批量执行和单条执行的耗时c.记录oracleplsql批量执行和单条执行的耗时相关java和数据库版本如下:Java17,Mysql8,Oracl

mysql怎么判断是否是数字类型mysql怎么判断是否是数字类型May 16, 2022 am 10:09 AM

在mysql中,可以利用REGEXP运算符判断数据是否是数字类型,语法为“String REGEXP '[^0-9.]'”;该运算符是正则表达式的缩写,若数据字符中含有数字时,返回的结果是true,反之返回的结果是false。

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Dreamweaver Mac版

Dreamweaver Mac版

시각적 웹 개발 도구

PhpStorm 맥 버전

PhpStorm 맥 버전

최신(2018.2.1) 전문 PHP 통합 개발 도구

ZendStudio 13.5.1 맥

ZendStudio 13.5.1 맥

강력한 PHP 통합 개발 환경

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.