请教大家一个问题,每次我连接数据库的时候,就会报错。大家知道是什么原因吗??
//**************************************
错误:
java.sql.SQLException: Access denied for user 'abc'@'root' (using password: YES)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1055)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3515)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3447)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:911)
at com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.java:3953)
at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1276)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2048)
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:723)
at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:46)
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:406)
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:302)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:282)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at com.struts.ClassifyDAO.<init>(ClassifyDAO.java:21)
at com.struts.ClassifyAction.doQueryClassify(ClassifyAction.java:37)
at com.struts.ClassifyAction.execute(ClassifyAction.java:25)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:857)
at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:565)
at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1509)
at java.lang.Thread.run(Unknown Source)
2010-11-3 11:58:35 org.apache.struts.action.RequestProcessor processException
警告: Unhandled Exception thrown: class java.lang.NullPointerException
2010-11-3 11:58:35 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet action threw exception
java.lang.NullPointerException
at com.struts.ClassifyDAO.query(ClassifyDAO.java:33)
at com.struts.ClassifyAction.doQueryClassify(ClassifyAction.java:41)
at com.struts.ClassifyAction.execute(ClassifyAction.java:25)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:857)
at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:565)
at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1509)
at java.lang.Thread.run(Unknown Source)
//*************************************************
代码是这样写的:package com.struts;
import java.sql.*;
import java.util.ArrayList;
import java.util.Collection;public class ClassifyDAO {
public static final String DRIVER_DATABASE="com.mysql.jdbc.Driver";
public static final String CONNECTION_DATABASE="jdbc:mysql://192.168.1.48:3306/struts_db?useUnicode=true&characterEncoding=GBK";
public static final String DATABASE_USER="abc";
public static final String DATABASE_PASSWORD="abc"; 

private Connection connection; // 连接数据库
public ClassifyDAO(){
try{
    Class.forName("com.mysql.jdbc.Driver");
}catch(Exception e){
e.printStackTrace();
}
try{
his.connection = DriverManager.getConnection   //此处报错。。(CONNECTION_DATABASE,DATABASE_USER,"DATABASE_PASSWORD");
}catch(SQLException e){
e.printStackTrace();
}
}


        public Collection query(Object model){   //数据查询
         String sql = "select * from classify";
          Collection collection = new ArrayList();
          try{
          Statement stmt = connection.createStatement();
          ResultSet rs = stmt.executeQuery(sql);
          while(rs.next()){
          ClassifyForm from = new ClassifyForm();
          from.setClassNum(rs.getString(1));
          from.setClassName(rs.getString(2));
          collection.add(from);
          }
          closeResultSet(rs);
          closeStatement(stmt);
          }catch(SQLException e){
          e.printStackTrace();
          }finally{
          closeConnection(connection);
          }
          return collection;
        }        
        public void closeResultSet(ResultSet result){  //关闭结果集
         try{
         if(result != null){
         result.close();
         }
         }catch(SQLException e){
         e.printStackTrace();
         }
        }
        
     
        public void closeStatement(Statement stmt){  //关闭语句对象
         try{
         if(stmt != null){
         stmt.close();
         }
         }catch(SQLException e){
         e.printStackTrace();
         }
        }
        
        public void closeConnection(Connection connection){ //断开与数据库的连接
         try{
         if(connection!=null && !connection.isClosed()){
         connection.commit();
         connection.close();
         }
         }catch(SQLException e){
         e.printStackTrace();        
         }
        }
}

解决方案 »

  1.   

    java.sql.SQLException: Access denied for user 'abc'@'root' (using password: YES)查看数据库中 'abc'是否有权限
      

  2.   


    我用别的工程,调abc的其他数据库就可以阿。用现在这个工程,掉abc的数据库就报错。
    难道都是abc 调不同的数据库,权限也不一样吗
      

  3.   

    his.connection = DriverManager.getConnection //此处报错。。(CONNECTION_DATABASE,DATABASE_USER,"DATABASE_PASSWORD");
    红色部分加引号不对了。这样密码是 DATABASE_PASSWORD。肯定连不上。改为
    his.connection = DriverManager.getConnection //此处报错。。(CONNECTION_DATABASE,DATABASE_USER,"ATABASE_PASSWORD)
      

  4.   

    。。(CONNECTION_DATABASE,DATABASE_USER,"DATABASE_PASSWORD"); 
    双引号去掉
      

  5.   


    his.connection = DriverManager.getConnection(CONNECTION_DATABASE,DATABASE_USER,"DATABASE_PASSWORD"); 
    把这句话的双引号去掉,加上双引号就等于root密码是 DATABASE_PASSWORD 了。
      

  6.   

    try{
    his.connection = DriverManager.getConnection //此处报错。。(CONNECTION_DATABASE,DATABASE_USER,"DATABASE_PASSWORD");
    }catch(SQLException e){
    e.printStackTrace();
    }
    }我也看到了,接分了。