报错,怎么回事

报错,怎么回事

http://img1.sycdn.imooc.com//climg/5da9bb060921d67f10600361.jpg跟老师代码一样的,为什么报这种错

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

4回答
好帮手慕珊 2019-10-19 18:22:34

同学,你好!我用你的代码尝试是没有问题的,同学确认一下properties文件存放的位置是否有问题。或者你下载老师的源码,在老师的源码里测试一下你的代码。祝学习愉快!

http://img1.sycdn.imooc.com//climg/5daae3b40912c67f02900361.jpg

提问者 qq_慕容1283338 2019-10-19 16:14:23
package com.imooc.jdbcUtils;

import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

/*
 * JDBC的工具类
 * @author hj
 */
public class JDBCUtils {
	private static final String driverClass;
	private static final String url;
	private static final String username;
	private static final String password;
	
	static {
		//加载属性文件并解析
		Properties props = new Properties();
		//通常情况下使用类的加载器的方式获取属性文件的输入流
		InputStream is = JDBCUtils.class.getClassLoader().getResourceAsStream("jdbc.properties");
		try {
			props.load(is);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		
		driverClass = props.getProperty("driverClass");
		url = props.getProperty("url");
		username = props.getProperty("username");
		password = props.getProperty("password");
	}
	
	/*
	 * 注册驱动的方法 
	 */
	public static void loadDriver() throws ClassNotFoundException {
		Class.forName(driverClass);
	}
	
	/*
	 * 获得连接的方法:
	 */
	public static Connection getConnection() throws Exception {
		loadDriver();
		Connection con = DriverManager.getConnection(url, username, password);
		System.out.println(username+"          "+password);
		return con;
	}
	
	/*
	 * 资源释放
	 */
	public static void release(Statement s,Connection con) {
		if(s != null) {
			try {
				s.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
			s = null;
		}
		if(con != null) {
			try {
				con.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
			con = null;
		}
	}
	
	public static void release(Statement s,Connection con,ResultSet rs) {
		if(s != null) {
			try {
				s.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
			s = null;
		}
		if(rs != null) {
			try {
				rs.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
			rs = null;
		}
		if(con != null) {
			try {
				con.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
			con = null;
		}
	}
}

配置文件

driverClass=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/jdbctest?useSSL=false&useUnicode=true&characterEncoding=UTF8&serverTimezone=GMT%2B8&allowPublicKeyRetrieval=true
username=root
password=1234	

我用下面这种方式代替调用工具类中的函数,就能运行成功:http://img1.sycdn.imooc.com//climg/5daac59f09bbce7a10360160.jpg

这是怎么回事啊,确信用户密码真的没有错!

提问者 qq_慕容1283338 2019-10-19 10:58:00

加上之后又报下面的错误了。。。。。。http://img1.sycdn.imooc.com//climg/5daa7bae09f57d9a11530311.jpg

  • 你好!检查一下数据库的密码是不是写错了。祝学习愉快!
    2019-10-19 14:25:17
  • 提问者 qq_慕容1283338 回复 好帮手慕珊 #2
    密码没有错啊
    2019-10-19 15:15:22
  • 提问者 qq_慕容1283338 回复 好帮手慕珊 #3
    我不用设置配置文件那种方式就能成功进入,但使用配置文件就要报这种错,代码都看了,没什么不一样的啊,用户密码也确认没有打错
    2019-10-19 16:05:14
好帮手慕珊 2019-10-19 10:26:56

你好!有可能和老师的数据库配置不大一样,出现这个问题后,尝试在数据库的url后加上?allowPublicKeyRetrieval=true,看一下是否能解决,如下所示:

http://img1.sycdn.imooc.com//climg/5daa742709e263ea05010054.jpg

如果之前已经有?和相关属性了,可以在末尾添加&allowPublicKeyRetrieval=true

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师