运行错误。。

运行错误。。

package com.imooc.jdbc.utils;

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 51768
 *
 */
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 inputStream = JDBCUtils.class.getClassLoader().getResourceAsStream("jdbc.properties");
		try{
			props.load(inputStream);
		}catch(Exception e) {
			e.printStackTrace();
		}
		driverClass = props.getProperty("driverClass");
		url = props.getProperty("url"+"?useSSL=false&serverTimezone=Hongkong&useUnicode=true&characterEncoding=utf-8");
		username = props.getProperty("username");
		password = props.getProperty("password");
	}
	/**
	 *  注册驱动方法
	 * @throws ClassNotFoundException 
	 */
	public static void loadDriver() throws ClassNotFoundException {
		Class.forName(driverClass);
	}
	
	/**
	 * 获得连接方法
	 * @throws Exception 
	 */
	public static Connection getConnection() throws Exception {
		loadDriver();
		Connection con = DriverManager.getConnection(url,username,password);
		return con;
	}
	
	/**
	 * 资源释放方法
	 */
	public static void release(Statement stat,Connection con) {
		if(stat != null) {
			try {
				stat.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
			stat = null;
		}
		if(con != null) {
			try {
				con.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
			con = null;
		}
	}
	public static void release(ResultSet rs,Statement stat,Connection con) {
		if(rs != null) {
			try {
				rs.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
			rs = null;
		}
		if(stat != null) {
			try {
				stat.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
			stat = 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/goodstest
username = root
password = 0923

——————————————————————————————————————————————————————————————
package com.imooc.jdbc.demo1;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;

import org.junit.Test;

import com.imooc.jdbc.utils.JDBCUtils;

public class demo2 {
	@Test
	public void demo() {
		Connection con = null;
		Statement stat = null;
		ResultSet rs = null;
		try {
			//建立连接(同时加载驱动)
			con = JDBCUtils.getConnection();
			//创建执行SQL语句的对象
			stat = con.createStatement();
			//创建SQL语句
			String sql = "insert goods values(null,'ipad',3300.0,'2019款')";
			int i = stat.executeUpdate(sql);
			if(i > 0) {
				System.out.println("保存成功!");
				//创建查询SQL语句
				String sql1 = "select * from goods";
				rs = stat.executeQuery(sql1);
				while(rs.next()) {
					System.out.println(rs.getInt("id")+"   "+rs.getString("name")+"   "+rs.getFloat("price")+"   "+rs.getString("desp"));
				}
			}else {
				System.out.println("保存失败!");
			}
		}catch(Exception e){
			e.printStackTrace();
		}finally {
			//释放资源
			JDBCUtils.release(rs, stat, con);
		}
	}
}
————————————————————————————————————————————————————————————————
java.sql.SQLException: Access denied for user 'root;'@'localhost' (using password: YES)
	at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129)
	at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)
	at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)
	at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:835)
	at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:455)
	at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:240)
	at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:199)
	at java.sql.DriverManager.getConnection(Unknown Source)
	at java.sql.DriverManager.getConnection(Unknown Source)
	at com.imooc.jdbc.utils.JDBCUtils.getConnection(JDBCUtils.java:50)
	at com.imooc.jdbc.demo1.demo2.demo(demo2.java:19)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:89)
	at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:41)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:541)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:763)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:463)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:209)

正在回答

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

3回答

同学你好,建议同学将url完整的写在jdbc.properties配置文件中,如:

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

在JDBCUtils类中直接获取url再试试,如:

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

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

提问者 敏捷丶 2019-12-19 20:22:17
java.sql.SQLException: The url cannot be null
	at java.sql.DriverManager.getConnection(Unknown Source)
	at java.sql.DriverManager.getConnection(Unknown Source)
	at com.imooc.jdbc.utils.JDBCUtils.getConnection(JDBCUtils.java:51)
	at com.imooc.jdbc.demo1.demo2.demo(demo2.java:20)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:89)
	at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:41)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:541)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:763)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:463)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:209)


  • 提问者 敏捷丶 #1
    试了很久发现就是获得连接的问题,如果不使用属性文件jdbc.properties的话是没有错误的,使用了就会提示url不能为空
    2019-12-19 21:05:17
好帮手慕小班 2019-12-19 17:27:35

同学你好,根据同学贴出的错误信息:java.sql.SQLException: Access denied for user 'root;'@'localhost' (using password: YES)--》 数据库root没有成功登录。

出现这样错误的原因可能有:

        1、用户名和密码不匹配,比如:在连接池里密码后多打了一个空格。

        2、在配置文件中拼接数据时,建议这样书写:

url = props.getProperty("url"+"?useSSL=false&serverTimezone=Hongkong&useUnicode=true&characterEncoding=utf-8");

        3、检查一下编码的内容,编码是否一致。

这里测试代码后,可以正常连接操作数据库。

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

  • 提问者 敏捷丶 #1
    加了之后还是错误
    2019-12-19 19:44:55
  • 提问者 敏捷丶 #2
    java.sql.SQLException: The url cannot be null at java.sql.DriverManager.getConnection(Unknown Source) at java.sql.DriverManager.getConnection(Unknown Source) at com.imooc.jdbc.utils.JDBCUtils.getConnection(JDBCUtils.java:50) at com.imooc.jdbc.demo1.demo2.demo(demo2.java:19) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source)
    2019-12-19 19:51:14
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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