zoukankan      html  css  js  c++  java
  • 说说Java程序和数据库交互的乱码解决

    本文就本人遇到的问题进行讲解

    1.通过jdbc直连方式,连接Mysql数据库,从程序向数据库中写入数据出现的乱码解决方案。

      当通过程序向Student表中写入一条数据时,写入数据库的内容会产生乱码。

    如下图

     

    解决方案:

      1。创建数据库的时候:

                                CREATE   DATABASE   `Db` 
                                   CHARACTER   SET   'utf8 ' 
                                   COLLATE   'utf8_general_ci '; 


    2.建表的时候:      

                                CREATE   TABLE   `TableA`   ( 
                                        `ID`   varchar(40)   NOT   NULL   default   ' ', 
                                         `UserID`   varchar(40)   NOT   NULL   default   ' ',  ) 
                                          ENGINE=InnoDB   DEFAULT   CHARSET=utf8; 

    但是本人感觉关系不是很大,不过可以作为一种尝试手段。

     3.该方案行之有效,就是修改Mysql安装目录的配置文件

     

    需要修改my.ini中两个位置的编码,

    第一处

     

    第二处:

     

    设置后,通过命令重启服务

     

    最终问题解决。

    2.如果是通过jdbcmysql数据库读取数据出现乱码,但是数据库中数据本身并没有出现乱码,那么可以使用在url中加参数的解决方案。

    Url写法如下:

    jdbc:mysql://localhost:3306/database?useUnicode=true&characterEncoding=UTF-8 

     

    3.如果将url中的localhost换成IP地址,出现如下问题:

    报错:1130-host ... is not allowed to connect to this MySql server

    解决方法:

    1。 改表法。

    可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑,登入mysql后,更改 "mysql" 数据库里的 "user" 表里的 "host" 项,从"localhost"改称"%"

    mysql -u root -pvmwaremysql>use mysql;

    mysql>update user set host = '%' where user = 'root';

    刷新授权 ,该行代码必须有。。FLUSH   PRIVILEGES;

     

    4.JDBC-ODBC桥连方式从数据库中读取数据出现乱码解决方案

    不要直接读取,可以使用如下方式转换读取,问题解决

    String stuname=new String(rs.getBytes(2),"utf-16le");

    结语:JDBC和数据库交互产生乱码是开发中经常遇到的棘手问题,希望这里的总结可以帮助到您。

     

     

  • 相关阅读:
    django第10天(聚合查询,常用字段)
    django第9天(多表操作)
    django第8天(在测试文件中运行django项目|单表操作)
    django第七天(模板的复用性,include标签和母版)
    django第六天(模板相关,过滤器和标记)
    SparkCore2
    SparkCore
    SQL
    Spark基础
    使用Observer实现HBase到Elasticsearch的数据同步
  • 原文地址:https://www.cnblogs.com/weilengdeyu/p/3815995.html
Copyright © 2011-2022 走看看