IDEA运行Java代码嵌入SQL语言遇到报错

最近刚学JDBC,想用MySQL连接IDEA,在Java里面嵌入SQL语句实现调用数据库表;但是在运行时遇到了无法解决的问题。
Java代码如下:


import java.sql.Connection;
import java.sql.DriverManager;

public class Demo9_2 {
        public static void main(String[] srg) {
            String driverName = "com.mysql.cj.jdbc.Driver";
            // 加载JDBC驱动
            String dbURL = "jdbc:mysql://localhost:3306:studb";
            // 连接服务器和数据库
            String userName = "root"; // 默认用户名
            String userPwd = "123456"; // 密码
            Connection dbConn;
            try {
                Class.forName(driverName);
                dbConn = DriverManager.getConnection(dbURL, userName, userPwd);
                System.out.println("Connection Successful!");
                // 如果连接成功 控制台输出Connection Successful!
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
}


运行时出现报错:

java.sql.SQLNonTransientConnectionException: Cannot load connection class because of underlying exception: com.mysql.cj.exceptions.WrongArgumentException: Failed to parse the host:port pair 'localhost:3306:studb'.
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:110)
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:89)
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:63)
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:73)
    at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:79)
    at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:131)
    at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:219)
    at java.sql.DriverManager.getConnection(DriverManager.java:664)
    at java.sql.DriverManager.getConnection(DriverManager.java:247)
    at Demo9.Demo9_2.main(Demo9_2.java:17)
Caused by: com.mysql.cj.exceptions.UnableToConnectException: Cannot load connection class because of underlying exception: com.mysql.cj.exceptions.WrongArgumentException: Failed to parse the host:port pair 'localhost:3306:studb'.
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:61)
    at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:105)
    ... 4 more
Caused by: com.mysql.cj.exceptions.WrongArgumentException: Failed to parse the host:port pair 'localhost:3306:studb'.
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:61)
    at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:105)
    at com.mysql.cj.conf.ConnectionUrlParser.parseHostPortPair(ConnectionUrlParser.java:502)
    at com.mysql.cj.conf.ConnectionUrlParser.buildHostInfoResortingToGenericSyntaxParser(ConnectionUrlParser.java:440)
    at com.mysql.cj.conf.ConnectionUrlParser.parseAuthoritySegment(ConnectionUrlParser.java:269)
    at com.mysql.cj.conf.ConnectionUrlParser.parseAuthoritySection(ConnectionUrlParser.java:183)
    at com.mysql.cj.conf.ConnectionUrlParser.getHosts(ConnectionUrlParser.java:632)
    at com.mysql.cj.conf.ConnectionUrl.getConnectionUrlInstance(ConnectionUrl.java:198)
    at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:196)
    ... 3 more
Caused by: java.lang.NumberFormatException: For input string: "studb"
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
    at java.lang.Integer.parseInt(Integer.java:580)
    at java.lang.Integer.parseInt(Integer.java:615)
    at com.mysql.cj.conf.ConnectionUrlParser.parseHostPortPair(ConnectionUrlParser.java:500)
    ... 9 more


感觉java代码应该没有错,不知道是不是JDBC驱动程序配置问题。
我将MySQL驱动程序包放在了对应项目的lib的目录下:

img

在项目结构中我也把相应的MySQL驱动程序放入了对应的SDK里和模块-依赖中:

img

img

实在不知道怎么解决了。
顺便说一下,JDK版本1.8,MySQL版本8.0

dbUrl有问题,后面改成这样:3306/studb
是java连接MySQL,不是MySQL连接IDEA

问题解决了,URL格式出错
改为:

String dbURL = "jdbc:mysql://localhost:3306/studb?serverTimezone=UTC";

  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/329461
  • 这篇博客也不错, 你可以看下JAVA数据库驱动是5.0版本,无法连接8.0版MYSQL的问题
  • 除此之外, 这篇博客: 浅谈JDBC操作MySQL数据库实现事务管理中的 1. 建立到特定数据库的连接 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • Connection con =DriverManager.getConnection(url,user,pwd);
    

    此处的url,user,pwd建议在前面以字符串类型设定好,在DriverManager.getConnection方法中使用参数完成Connection对象的创建。

  • 您还可以看一下 崔海焘老师的转行做IT-第19章 MySql数据库基础 java入门课程中的 课程目标小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    根据提供的信息,无法确定报错的具体原因,也无法确定是否是JDBC驱动程序配置的问题。需要更多的信息和代码才能找出问题所在。建议检查代码中的语法错误或逻辑错误,并确认MySQL服务是否正常运行。如果问题仍然存在,可以尝试重新配置JDBC驱动程序或使用其他方法连接MySQL数据库。