Search code examples
javajdbcderby

org.apache.derby.client.net.NetConnection40 cannot be cast to com.mysql.jdbc.Connection error even after connection success?


I'm making a simple JavaSE login jFrame in Netbeans. I made an internal sql database, but the problem is that when starting the application it has the following console output:

run:
CONNECTION DONE!
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: org.apache.derby.client.net.NetConnection40 cannot be cast to com.mysql.jdbc.Connection
    at DBConnection.connect(DBConnection.java:31)
    at mainFrame.<init>(mainFrame.java:29)
    at mainFrame$7.run(mainFrame.java:360)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756)
    at java.awt.EventQueue.access$500(EventQueue.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:709)
    at java.awt.EventQueue$3.run(EventQueue.java:703)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:726)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
BUILD SUCCESSFUL (total time: 1 second)

It says connection done, but then gives error. I have also imported derbyclient.jar file in libraries. I searched for the solutions online and tried replacing:

jdbc:derby://localhost:1527/JavaDB;

With this:

jdbc:derby://localhost:1527/JavaDB;create=true

CODE: mainFrame

import com.mysql.jdbc.Connection;
import com.mysql.jdbc.PreparedStatement;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.sql.ResultSet;
import javax.swing.ImageIcon;
import javax.swing.JOptionPane;
import javax.swing.SwingConstants;

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author sniper
 */
public class mainFrame extends javax.swing.JFrame {

    Dimension dim = Toolkit.getDefaultToolkit().getScreenSize(); // Getting dimentions for screen size
    int xMouse; // for movement x axis
    int yMouse; // for movement y axis

    // FOR SQL CONNECTION
    Connection conn = new DBConnection().connect();

    /**
     * Creates new form mainFrame
     */
    public mainFrame() {
        initComponents();
        this.setLocation(dim.width/2-this.getSize().width/2, dim.height/2-this.getSize().height/2); // setting screen in center
        txtUsername.setHorizontalAlignment(SwingConstants.CENTER); // center align txtUsername text
        txtPassword.setHorizontalAlignment(SwingConstants.CENTER); // center align txtPassword text
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {

        jPanel1 = new javax.swing.JPanel();
        jPanel2 = new javax.swing.JPanel();
        lblHeaderText = new javax.swing.JLabel();
        txtUsername = new javax.swing.JTextField();
        txtPassword = new javax.swing.JPasswordField();
        lblLoginTypeText = new javax.swing.JLabel();
        cbType = new javax.swing.JComboBox<>();
        btnEnter = new javax.swing.JLabel();
        lblTopText = new javax.swing.JLabel();
        lblIcon = new javax.swing.JLabel();
        lblExit = new javax.swing.JLabel();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setTitle("SGMS");
        setUndecorated(true);
        setResizable(false);

        jPanel1.setBackground(new java.awt.Color(0, 0, 0));
        jPanel1.setForeground(new java.awt.Color(255, 255, 255));
        jPanel1.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
            public void mouseDragged(java.awt.event.MouseEvent evt) {
                jPanel1MouseDragged(evt);
            }
        });
        jPanel1.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mousePressed(java.awt.event.MouseEvent evt) {
                jPanel1MousePressed(evt);
            }
        });

        jPanel2.setBackground(new java.awt.Color(0, 51, 51));
        jPanel2.setForeground(new java.awt.Color(153, 204, 255));

        lblHeaderText.setBackground(new java.awt.Color(0, 51, 51));
        lblHeaderText.setFont(new java.awt.Font("Arial Black", 1, 36)); // NOI18N
        lblHeaderText.setForeground(new java.awt.Color(102, 102, 255));
        lblHeaderText.setText("SGMS - LOGIN");

        txtUsername.setBackground(new java.awt.Color(0, 0, 0));
        txtUsername.setFont(new java.awt.Font("Tahoma", 1, 18)); // NOI18N
        txtUsername.setForeground(new java.awt.Color(255, 255, 255));
        txtUsername.setText("Username");
        txtUsername.setToolTipText("");
        txtUsername.setBorder(null);
        txtUsername.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseEntered(java.awt.event.MouseEvent evt) {
                txtUsernameMouseEntered(evt);
            }
            public void mouseExited(java.awt.event.MouseEvent evt) {
                txtUsernameMouseExited(evt);
            }
        });

        txtPassword.setBackground(new java.awt.Color(0, 0, 0));
        txtPassword.setFont(new java.awt.Font("Tahoma", 1, 18)); // NOI18N
        txtPassword.setForeground(new java.awt.Color(255, 255, 255));
        txtPassword.setText("Password");
        txtPassword.setBorder(null);
        txtPassword.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseEntered(java.awt.event.MouseEvent evt) {
                txtPasswordMouseEntered(evt);
            }
            public void mouseExited(java.awt.event.MouseEvent evt) {
                txtPasswordMouseExited(evt);
            }
        });

        lblLoginTypeText.setFont(new java.awt.Font("Arial Black", 0, 18)); // NOI18N
        lblLoginTypeText.setForeground(new java.awt.Color(102, 204, 255));
        lblLoginTypeText.setText("LOGIN TYPE");

        cbType.setBackground(new java.awt.Color(0, 51, 51));
        cbType.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "CHOOSE LOGIN TYPE", "Administrator", "Academic Staff", "Administrative Staff", "Student" }));

        btnEnter.setIcon(new javax.swing.ImageIcon("C:\\Users\\sniper\\Documents\\NetBeansProjects\\SDMS\\enter.png")); // NOI18N
        btnEnter.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
        btnEnter.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                btnEnterMouseClicked(evt);
            }
            public void mouseEntered(java.awt.event.MouseEvent evt) {
                btnEnterMouseEntered(evt);
            }
            public void mouseExited(java.awt.event.MouseEvent evt) {
                btnEnterMouseExited(evt);
            }
        });

        javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
        jPanel2.setLayout(jPanel2Layout);
        jPanel2Layout.setHorizontalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addGap(66, 66, 66)
                .addComponent(lblHeaderText)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addGap(25, 25, 25)
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                    .addComponent(txtUsername, javax.swing.GroupLayout.DEFAULT_SIZE, 389, Short.MAX_VALUE)
                    .addComponent(txtPassword))
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel2Layout.createSequentialGroup()
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addComponent(lblLoginTypeText)
                        .addGap(86, 86, 86))
                    .addGroup(jPanel2Layout.createSequentialGroup()
                        .addGap(104, 104, 104)
                        .addComponent(cbType, javax.swing.GroupLayout.PREFERRED_SIZE, 241, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addContainerGap(26, Short.MAX_VALUE))))
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createSequentialGroup()
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addComponent(btnEnter)
                .addGap(256, 256, 256))
        );
        jPanel2Layout.setVerticalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addGap(34, 34, 34)
                .addComponent(lblHeaderText)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(txtUsername, javax.swing.GroupLayout.PREFERRED_SIZE, 37, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(lblLoginTypeText))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(txtPassword, javax.swing.GroupLayout.PREFERRED_SIZE, 37, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(cbType, javax.swing.GroupLayout.PREFERRED_SIZE, 34, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 87, Short.MAX_VALUE)
                .addComponent(btnEnter, javax.swing.GroupLayout.PREFERRED_SIZE, 92, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(19, 19, 19))
        );

        lblTopText.setBackground(new java.awt.Color(0, 0, 0));
        lblTopText.setFont(new java.awt.Font("Tahoma", 0, 18)); // NOI18N
        lblTopText.setForeground(new java.awt.Color(255, 255, 255));
        lblTopText.setText("SGMS");

        lblIcon.setBackground(new java.awt.Color(51, 51, 255));
        lblIcon.setFont(new java.awt.Font("Tahoma", 0, 18)); // NOI18N
        lblIcon.setForeground(new java.awt.Color(255, 255, 51));
        lblIcon.setIcon(new javax.swing.ImageIcon("C:\\Users\\sniper\\Documents\\NetBeansProjects\\SDMS\\logo.png")); // NOI18N

        lblExit.setIcon(new javax.swing.ImageIcon("C:\\Users\\sniper\\Documents\\NetBeansProjects\\SDMS\\exit.png")); // NOI18N
        lblExit.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
        lblExit.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                lblExitMouseClicked(evt);
            }
            public void mouseEntered(java.awt.event.MouseEvent evt) {
                lblExitMouseEntered(evt);
            }
            public void mouseExited(java.awt.event.MouseEvent evt) {
                lblExitMouseExited(evt);
            }
        });

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addComponent(lblIcon)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(lblTopText)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addComponent(lblExit)))
                .addContainerGap())
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addGap(6, 6, 6)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(lblTopText)
                    .addComponent(lblIcon)
                    .addComponent(lblExit))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
        );

        pack();
    }// </editor-fold>                        

    private void lblExitMouseClicked(java.awt.event.MouseEvent evt) {                                     
        // EXIT BUTTON
        System.exit(0);
    }                                    

    private void lblExitMouseEntered(java.awt.event.MouseEvent evt) {                                     
        // MOUSEOVER ICON CHANGE
        lblExit.setIcon(new ImageIcon("exit_hover.png"));
    }                                    

    private void lblExitMouseExited(java.awt.event.MouseEvent evt) {                                    
        // MOUSE EXIT ICON CHANGE
        lblExit.setIcon(new ImageIcon("exit.png"));
    }                                   

    private void jPanel1MouseDragged(java.awt.event.MouseEvent evt) {                                     
        // FOR MOVEMENT OF JFRAME
        int x  = evt.getXOnScreen();
        int y = evt.getYOnScreen();

        this.setLocation(x - xMouse,y - yMouse);      
    }                                    

    private void jPanel1MousePressed(java.awt.event.MouseEvent evt) {                                     
        // Saving mouse to start from frames 0,0 position
        xMouse = evt.getX();
        yMouse = evt.getY();
    }                                    

    private void txtUsernameMouseEntered(java.awt.event.MouseEvent evt) {                                         
        txtUsername.setBackground(Color.GRAY);
    }                                        

    private void txtUsernameMouseExited(java.awt.event.MouseEvent evt) {                                        
        txtUsername.setBackground(Color.BLACK);
    }                                       

    private void txtPasswordMouseEntered(java.awt.event.MouseEvent evt) {                                         
        txtPassword.setBackground(Color.GRAY);
    }                                        

    private void txtPasswordMouseExited(java.awt.event.MouseEvent evt) {                                        
        txtPassword.setBackground(Color.BLACK);
    }                                       

    private void btnEnterMouseEntered(java.awt.event.MouseEvent evt) {                                      
        // Setting Icon on hover
        btnEnter.setIcon(new ImageIcon("enter_hover.png"));
    }                                     

    private void btnEnterMouseExited(java.awt.event.MouseEvent evt) {                                     
        // Setting icon on hover off
        btnEnter.setIcon(new ImageIcon("enter.png"));
    }                                    

    private void btnEnterMouseClicked(java.awt.event.MouseEvent evt) {                                      
        // LOGIN CODE HERE
        String sql = "select * from ROOT.ADMINLOGIN where username=? and password=?";
        try
        {
            PreparedStatement ps = (PreparedStatement) conn.prepareStatement(sql);
            ps.setString(1, txtUsername.getText());
            ps.setString(2, txtPassword.getText());
            ResultSet rs = ps.executeQuery();

            if(rs.next())
            {
                JOptionPane.showMessageDialog(this,"SUCCESSFULL");
            }
            else
            {
                JOptionPane.showMessageDialog(this,"WRONG");
            }
        }
        catch (Exception e)
        {

        }
    }                                     

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        /* Set the Nimbus look and feel */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(mainFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(mainFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(mainFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(mainFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>

        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new mainFrame().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify                     
    private javax.swing.JLabel btnEnter;
    private javax.swing.JComboBox<String> cbType;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JLabel lblExit;
    private javax.swing.JLabel lblHeaderText;
    private javax.swing.JLabel lblIcon;
    private javax.swing.JLabel lblLoginTypeText;
    private javax.swing.JLabel lblTopText;
    private javax.swing.JPasswordField txtPassword;
    private javax.swing.JTextField txtUsername;
    // End of variables declaration                   
}

CODE: DBConnection.java

import com.mysql.jdbc.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author sniper
 */
public class DBConnection {
    private Connection DBConnection;
    public Connection connect()
    {
            try
            {
                Class.forName("com.mysql.jdbc.Driver");
                System.out.println("CONNECTION DONE!");
            }
            catch(ClassNotFoundException cnfe)
            {
                System.out.println("FAILED CONNECTION >> " + cnfe);
            }
            String url = "jdbc:derby://localhost:1527/JavaDB;create=true";
            try{
                DBConnection = (Connection) DriverManager.getConnection(url, "root", "toor");
                System.out.println("Database Connected");
            }
            catch(SQLException se)
            {
                System.out.println("No Database >> " + se);
            }
            return DBConnection;
    }
}

Any suggestions on how to make it working again? Images included.

Image 1 Image 2


Solution

  • You are connecting to Derby, and trying to cast it to a com.mysql.jdbc.Connection (which is part of the MySQL driver, not Derby), that of course is not going to work. Replace the import com.mysql.jdbc.Connection, by import java.sql.Connection, the same goes for import com.mysql.jdbc.PreparedStatement, replace that with import java.sql.PreparedStatement.

    You should almost never have to cast to a driver specific class, instead always try to use the JDBC API interfaces.