【Java Web】jdbc —— 程序在DriverManager.getConnection(url,user,password)处卡住不走

【Java Web】jdbc —— 程序在DriverManager.getConnection(url,user,password)处卡住不走程序在DriverManager.getConnection(url,user,password)处卡住不走文章目录1.问题引入2.问题解决1.问题引入最近写了一个简单的Java项目,其中只有一个测试主类test.java,用来测试能不能连接上数据库,代码如下:packagecom.zed.test;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.SQLException;impo.

程序在DriverManager.getConnection(url,user,password)处卡住不走

1.问题引入

最近写了一个简单的Java项目,其中只有一个测试主类 test.java,用来测试能不能连接上数据库,代码如下:

package com.zed.test;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

public class test { 
   
    public static void main(String[] args) { 
   
        try{ 
   
            //加载驱动
            Class.forName("com.mysql.cj.jdbc.Driver");
            //定义链接(注意设置编码)
            String url = "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8";
            //定义用户
            String user = "root";
            //定义密码
            String password = "123456";
            //获取连接
            System.out.println("开始连接");
            Connection connection = DriverManager.getConnection(url,user,password);
            System.out.println("连接成功:"+connection);

            //执行操作
            String sql = "insert into student(name,score,birthday) values('张三',89,'1999-3-5')";
            Statement statement = connection.createStatement();
            int result = statement.executeUpdate(sql);
            System.out.println(result);

        }catch (ClassNotFoundException e){ 
   
            e.printStackTrace();
        }catch (SQLException e){ 
   
            e.getErrorCode();
        }
    }
}

所需要操作的表是 student,如下:
在这里插入图片描述

代码的逻辑很简单:

  1. 加载驱动。
  2. 获取连接。
  3. sql语句测试。

就是用来测试能不能连接上数据库,然后输出执行sql语句后的结果。
按照正常的逻辑,程序应该输出以下结果(红框部分因人而异):
在这里插入图片描述
而实际得到的结果如下:
在这里插入图片描述
程序并没有报错,但是却卡在了Connection connection = DriverManager.getConnection(url,user,password);这个地方。后面的日志没有输出,后台也没有报错信息,程序界面也直接卡在那里了。
当然,我写的 url 格式没有任何问题(查找了多篇博客对照),user以及password也并没有错。


2.问题解决

我在网上找了半天都没看到一个和我存在同样问题的人,后来好不容易在思否上找到了相关贴子,但那下面也仍然没有给出解决办法。后来我请教一个同学,才发现了问题所在。特此记录踩坑历程。
首先我们看 url 的格式:

 String url = "jdbc:mysql://localhost:3306/test";
  1. 上面的 jdbc 和 mysql 表示连接协议,组合起来(jdbc:mysql)可理解为“用 jdbc 连接 mysql 类型数据库”;
  2. localhost 表示数据库所在的 ip 地址,由于我们的数据库就在本机电脑上(即127.0.0.1),因此可以用 loccalhost来表示;
  3. 3306 表示本地数据库的端口号,这个可以在你装的 mysql 中查看(初始情况下都是3306);
  4. test 表示你建立的数据库。

上面4点中的前3点都是“写死的”,如果在连接数据库的过程中出错了,基本上都是错在第4点。当然,我也确实是错在第4点了。
由于我在使用 HeidiSQL 操作MySQL数据库时,打开的界面是这样的:
在这里插入图片描述
因此我下意识地认为,我建立的数据库名称就是 test 。但实际上,你建立的数据库名称应该是 demodb,如下所示:
在这里插入图片描述
所以,这才导致了上面在连接数据库时出现的一系列情况。
当把连接数据库的 url 改为:

String url = "jdbc:mysql://localhost:3306/demodb?useUnicode=true&characterEncoding=UTF-8";

后,程序就能正常的连接数据库啦。

说实话这是一个很低级的错,踩坑一次,绝不再犯,特此记录~~~


今天的文章【Java Web】jdbc —— 程序在DriverManager.getConnection(url,user,password)处卡住不走分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/28550.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注