您的位置:首页 > 编程语言 > Java开发

Exception in thread "main" java.sql.SQLException: Access denied for user 'root'@'localhost' (using p

2016-12-03 13:06 1186 查看
import java.io.IOException;

import java.io.InputStream;

import java.sql.Connection;  

import java.sql.DriverManager;  

import java.sql.PreparedStatement;

import java.sql.ResultSet;  

import java.sql.SQLException;  

import java.sql.Statement;  

import java.util.Properties;

  

          

        public class BasicConnectionDemo  

        {  

          

            /** 

             * @param args 

             */  

            public static void main(String[] args)throws Exception  

            {  

            String driver;

            String url ;  

                String username ;  

                String password ;  

                String sql = "select * from kk";  

               

                InputStream in = BasicConnectionDemo.class.getClassLoader().getResourceAsStream("db.properties");  

                Properties pro = new Properties();  

                try {  

                    pro.load(in);  

                } catch (IOException e) {  

                     

                    e.printStackTrace();  

                } 

                driver = pro.getProperty("driver");  

                url = pro.getProperty("url");  

                username = "root";  

                password = "111111";

                

                System.out.println(password);

                easyConnect(url, username, password, sql);  

            }  

            public static void easyConnect(String url,String user,String password,String sql)  

                    throws ClassNotFoundException, SQLException  

            {  

            try{

                   Class<?> aa= Class.forName("com.mysql.jdbc.Driver"); 

                   System.out.println(aa);

                    }

                    catch (ClassNotFoundException e) {  

                       

                        e.printStackTrace();

                    }

                Connection conn = DriverManager.getConnection(url,user,password);  

                Statement stat = conn.createStatement();  

                ResultSet rs = stat.executeQuery(sql);  

                while(rs.next())  

                {  

                    System.out.print(rs.getObject("id") + " ");  

                    System.out.print(rs.getObject("name") + " ");  

                    System.out.print(rs.getObject("age") + "\n");  

                }  

                rs.close();  

                stat.close();  

                conn.close();  

            }  
        }

改为   password = "727272";为

                  password=pro.getProperty("password"); 

后异常,Exception in thread "main" java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:964)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3970)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3906)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:873)
at com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.java:4417)
at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1278)
at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2253)
at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2284)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2083)
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:806)
at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:425)
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:410)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:328)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at BasicConnectionDemo.easyConnect(BasicConnectionDemo.java:58)
at BasicConnectionDemo.main(BasicConnectionDemo.java:42)

把Class.forName("com.mysql.jdbc.Driver");

改为Class.forName( driver);

Exception in thread "main" java.lang.ClassNotFoundException: com.mysql.jdbc.Driver  
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at BasicConnectionDemo.easyConnect(BasicConnectionDemo.java:48)
at BasicConnectionDemo.main(BasicConnectionDemo.java:42)

把username="root";

改为 username = pro.getProperty("username ");

异常:

Exception in thread "main" java.sql.SQLException: Access denied for user ''@'localhost' (using password: YES)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:964)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3970)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3906)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:873)
at com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.java:4417)
at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1278)
at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2253)
at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2284)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2083)
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:806)
at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:425)
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:410)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:328)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at BasicConnectionDemo.easyConnect(BasicConnectionDemo.java:58)
at BasicConnectionDemo.main(BasicConnectionDemo.java:42)

Exception in thread "main" java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)

Exception in thread "main" java.lang.ClassNotFoundException: com.mysql.jdbc.Driver  分别是无法登陆和找不到驱动。

可是不用properties是可以登陆的。

于是我又测试了一下从db.properties读出来的是什么东西

System.out.println("driver:"+driver);

                System.out.println("password:"+password);

                System.out.println("username:"+username);

                System.out.println("url:"+url);

                  

                System.out.println("driver的类型:"+driver.getClass());

                System.out.println("password的类型:"+password.getClass());

                System.out.println("username的类型:"+username.getClass());

                System.out.println("url的类型:"+url.getClass());

结果显示的都是字符串类型,而且值又和直接对字符串赋的值一样的。

但为什么还是无法登陆了?。后来抱着试一试的态度

我又发现db.properties的每一行都有空格,删掉,就成功了

driver=com.mysql.jdbc.Driver

url=jdbc:mysql://localhost:3306/bookstore

username=root

password=727272
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐