今天打算用JAVA来连接一下MySQL数据库,这个过程呢真的折腾人啊
先看我写的代码:
import java.sql.*; //导入java.sql包public class Conn { // 创建类Conn Connection con; // 声明Connection对象 public Connection getConnection() { // 建立返回值为Connection的方法try { // 加载数据库驱动类Class.forName("com.mysql.jdbc.Driver");System.out.println("数据库驱动加载成功");} catch (ClassNotFoundException e) {e.printStackTrace();}try { // 通过访问数据库的URL获取数据库连接对象con = DriverManager.getConnection("jdbc:mysql:"+"//192.168.43.188:3306/test", "root", "root");System.out.println("数据库连接成功");} catch (SQLException e) {e.printStackTrace();}return con; // 按方法要求返回一个Connection对象 } public static void main(String[] args) { // 主方法Conn c = new Conn(); // 创建本类对象c.getConnection(); // 调用连接数据库的方法 }}代码看上去非常简单,先加载mysql驱动包,加载成功输出提示,然后连接数据库,第一个参数是数据库的URL,第二个参数是数据库用户名,第三个毫无疑问是密码了,好了,一运行bug来了:
文章插图
【java连接Mysql数据库遇到的bug】
弹出的错误是:我的电脑不被允许连接到这个数据库,我就懵了,数据库就在我的电脑上,为什么就不给连接呢?后来一查发现是Mysql不允许远程连接,但问题是我的是本地连接啊!又懵了 。后来发现是权限问题,就是数据库没有开放相应的权限 。
①解决方法:
打开终端,进入mysql
1、先选中mysql中的 ·mysql· 表 use mysql;2、更新权限,修改为允许全部连接update user set host = '%' where user = 'root';3、查看是否修改成功select host, user from user;4、刷新表的权限(或者重启一次mysql)flush privileges; 以上的方法是允许所有的用户都可以连接到mysql,这个太危险了,只要有了你的数据库URL,谁都可以连接 。我呢就接收不了这样的结果,所以这个方法就不适合我 。后面我一直找解决方法,没找到,我就先安装Mysql数据库吧!安装数据库的过程还算挺顺利的,也挺快的 。当我建完库,建完表后,插入第一条数据,然后噩梦就来了:
insert into db1(id,name)values(1,'小屁孩');bug又出现了:
文章插图
它说字符串的值不正确,我学了一个学期的SQL server,就算我再笨也不止于连一条插入数据的sql语句都写错吧,我反复检查,肯定不是我的锅,不出我所料,代码没有问题,又是数据库搞得鬼,其实不输入汉字的话,是可以用的,但是我有强迫症,我必须要它可以输入汉字,最后又踏上了修bug的道路 。首先,MySQL安装好以后默认的编码显示是这样的:
文章插图
其中value那一列是有两个值时latin1,后来一查问题就出在这里,很多时候我们写代码或者写文档的时候出现乱码就是因为编码不是UTF-8的,毫无疑问,我要把这两个值改为UTF-8的,
网上的方法很多,也很杂,还有一些忽悠人的,比如:
①
set character_set_database=utf8;这句代码确实可以改,但是只是改表面的,当你关闭数据库,再次输入show variables like ‘character%’;去查询还是跟上图是一样,根本就没有改到配置 。
②
1.用管理员身份打开cmd:输入net stop mysql,把MySQL服务停止,打开MySQL安装目录,找到my.ini,如果没有的话,应该有my-default.ini,是一样的 。如果是my-default.ini,建议在当前目录下复制粘贴一个新文件,重命名为my.ini,然后在文件内添加以下设置,保存即可,然后将其复制到MySQL的bin目录下
[client]
#设置客户端字符集
default-character-set=utf8
[mysqld]
#设置服务器字符集为utf8
character_set_server=utf8
2.然后,在回到cmd,输入net start mysql,启动服务器,顺利的话,就可以启动成功 。然后新开一个cmd窗口,连接mysql,再次查看编码方式即都变为utf-8 。
以上的两个方法我都试过了,然并卵,这两个方法都是不行的,你们不用试了 。网上几乎所有的方法都是改my.ini配置文件,但是没多少个是可以,我差不多要绝望了,java那边还没弄好,数据库这边又出问题 。这个问题我折腾了好久,内心还是很想解决,但是这个时候我已经错过了饭点了,从下午4点开始到8点钟,我没吃过东西也没有喝过水,我内心其实很想继续找bug的,但是我的身体不允许,我就先去吃点东西 。
推荐阅读
- lol出现无法连接服务器 英雄联盟无法连接服务器
- java:究竟什么是可重入锁?
- 一份非常完整的 MySQL 规范
- 两个无线路由器怎么连接?
- Java程序员必须了解的7个性能指标
- javascript中的navigator对象和screen对象
- MySQL中正则表达式
- 算法思路 过程动图 Java排序算法实现方式
- JavaScript冒泡排序与选择排序
- javascript内置对象之数学函数Math的常用方法