0

I'm so grateful for the guys who have assisted me with advice on my previous post of the program below. This is my first sql-java (database) program, though I have some basic college knowledge of the two languages. I set my CLASSPATH via environment variable as per advice and YES the FirstExample.java / FirstExample.class is successfully compiled by Java Compiler and recognized at run time of the the JVM in the command line unlike before.
But then while trying to connect to the database I receive a long error message that I can't understand.
I'm a bit suspicious this could bit arising from 'username' issue, though I'm not really sure as I'm a newbie with database programing.
I'm wondering neither in the MySQL configuration wizard nor SQL -database design does 'username' appear though it's part of my tutorial FirstExample.java.

Please assist with solving this problem giving me head ache the whole day, thanks in advance.

Below is the command line error message:

 Connecting to database...
java.sql.SQLException: Access denied for user 'username'@'localhost' (using pass
word: YES)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1078)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4237)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4169)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:928)
    at com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.java:4736)
    at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1342)
    at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2493)
    at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2
526)
    at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2311)
    at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:834)
    at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstruct
orAccessorImpl.java:39)  
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingC
onstructorAccessorImpl.java:27)  
    at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
    at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:416)
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java
:347)    
    at java.sql.DriverManager.getConnection(DriverManager.java:582)
    at java.sql.DriverManager.getConnection(DriverManager.java:185)
    at FirstExample.main(FirstExample.java:22)  
Goodbye!  

Below is the basic information:
I saved the file as: C:\glassfish3\jdk\jre\lib\FirstExample.java then compiled to FirstExample.class

CLASSPATH: C:\glassfish3\jdk\jre\lib;C:\Program Files (x86)\MySQL\MySQL Connector J\mysql-connector-java-5.1.27-bin.jar

CATALINA: C:\Program Files\Apache Software Foundation\Tomcat 7.0\lib\jsp-api.jar

JAVA_HOME: C:\glassfish3\jdk

path: C:\glassfish3\jdk\bin;C:\Program Files (x86)\MySQL\MySQL Server 5.0\bin

MySQL directory: C:\Program Files (x86)\MySQL\MySQL Server 5.

Here is the database info:

database - 'EMP'.  
table -  'Employees'.     
password - 'password'   
Columns; id; age; first; last.  
data;   100; 28; Zaid; Khann.   

Java program:

//STEP 1. Import required packages    
import java.sql.*; // for standard JDBC programs    

public class FirstExample {  
    // JDBC driver name and database URL
    static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
    static final String DB_URL = "jdbc:mysql://localhost/EMP";

// Database credentials
static final String USER = "username";
static final String PASS = "password";

public static void main(String[] args) {
    Connection conn = null;
    Statement stmt = null;
    try{
        //STEP 2: Register JDBC driver
        Class.forName ( "com.mysql.jdbc.Driver");

        //STEP 3: Open a connection
        System.out.println("Connecting to database...");
        conn = DriverManager.getConnection(DB_URL,USER,PASS);

        //STEP 4: Execute a query
        System.out.println("Creating Statement...");
        stmt = conn.createStatement();
        String sql;
        sql = "SELECT id, first, last, age FROM Employees";
        ResultSet rs = stmt.executeQuery(sql);

        //STEP 5: Extract from result set
        while(rs.next()){
            //Retrieve by column name
            int id = rs.getInt("id");
            int age = rs.getInt("age");
            String first = rs.getString("first");
            String last = rs.getString("last");

            //Display values
            System.out.print("ID: " + id);
            System.out.print(", Age: " + age);
            System.out.print(", First: " + first);
            System.out.print(", Last: " + last);

        }
        //STEP 6: Clean-up enviroment
        rs.close();
        stmt.close();
        conn.close();
    } catch (SQLException se) {
        //Handle errors for JDBC
        se.printStackTrace();   
    }catch (Exception e) {
        //Handle errors for Class.forName
        e.printStackTrace();
    }finally{
        //finally block used to close resources
        try{
            if (stmt !=null)
            stmt.close();
        } catch(SQLException se2) {

        }// nothing we can do
        try{
            if(conn !=null)
                conn.close();
        } catch(SQLException se){
            se.printStackTrace();
        }//end finally try
        }//end try
        System.out.println("Goodbye!"); 
}//end main  
}//end FirstExample  

This is line 22 of the Java program in code editor:

conn = DriverManager.getConnection(DB_URL,USER,PASS); 
4
  • check your mysql username and password if it is correct or not Commented Dec 26, 2013 at 15:37
  • Your mysql username and password are not correct. I think the error message "Access denied for user 'username'@'localhost'" is pretty self explanatory. Commented Dec 26, 2013 at 15:39
  • You can test whether or not the username/password is correct by typing mysql -uusername -ppassword in the command line. Commented Dec 26, 2013 at 15:46
  • Thanx all guys, it worked right this time, I used USER = "root" Commented Dec 27, 2013 at 4:57

2 Answers 2

1

Check your username and password, you are using username as username and password as password, I think that your password is correct (because your database info said so), so you can try to change username to root:

static final String USER = "root";

Sign up to request clarification or add additional context in comments.

1 Comment

This work for me. I use sa as username when I should have been using root instead for mySQL. Thank you. Chenqui.
0

You are using username as username, password as password and you are logging in from localhost. You have to have an entry in the mysql.user table that corresponds to this.

Use CREATE USER 'username'@'localhost' IDENTIFIED BY 'password' to create the user you are logging in with.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.