ciao a tutti, sto facendo un piccola applicazione java con un database derby. Non riesco a fare il login dell'utente quando lancio l'applicazione, credo di aver problemi quando faccio la query o addirittura sbaglio nella crezione del database. Vi posto il codice.

classe per la creazione del database

codice:
package db;

import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;


public class Db {

    public Db(){
        creaDB();
    }

        private void creaDB(){

            try {//è una versione embedded quindi va chiusa quando l'applicazione termina
            java.sql.Connection con = null;
                Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
            try {
                con = DriverManager.getConnection("jdbc:derby:Negozio");
            } catch (java.sql.SQLException sqle) {
                try {
                    con = DriverManager.getConnection("jdbc:derby:Negozio;create=true");
                    con.createStatement().executeUpdate("CREATE TABLE UTENTE (IDUtente INT NOT NULL, login VARCHAR(20), password VARCHAR(8), nome VARCHAR(20), cognome VARCHAR(20))");
                    con.createStatement().executeUpdate("CREATE TABLE PRODOTTI (IDProdotto INT NOT NULL, nome VARCHAR(20))");
                    inserisciUtente(con);
                    

                } catch (SQLException ex) {
                   System.out.println("Errore nella creazione delle tabelle o inserimento dati");
                }
            }
            try {
                //è una versione embedded quindi va chiusa quando l'applicazione termina
                DriverManager.getConnection("jdbc:derby:Negozio;shutdown=true");
            } catch (SQLException se) {
                //Stato = 08006 chiusura OK, altrimenti si è verificato un errore
                if (!se.getSQLState().equals("08006")) {
                    throw se;
                }
            }
            } catch (SQLException ex) {
            //
        } catch (ClassNotFoundException ex) {//Stato = 08006 chiusura OK, altrimenti si è verificato un errore
            //
            }

        }

        private static void inserisciUtente(java.sql.Connection con){
               try {
               con.setAutoCommit(false);
               PreparedStatement s = con.prepareStatement("INSERT INTO UTENTE (IDUtente, login, password, nome, cognome) VALUES(?,?,?,?,?)");
               s.setInt(1, 0);
               s.setString(2, "admin");
               s.setString(3, "admin");
               s.setString(4, "Prova");
               s.setString(5, "Prova");
               s.executeUpdate();
               } catch (SQLException sqle) {
               if (con != null) {
                   try {
                       con.rollback();
                   } catch (SQLException sqle2) {
                       //log error
                   }
               }
           }

       }


       private static void inserisciProdotto(java.sql.Connection con){
               try {
               con.setAutoCommit(false);
               PreparedStatement s = con.prepareStatement("INSERT INTO PRODOTTI (IDProdotto, nome) VALUES(?,?)");
               s.setInt(1, 13);
               s.setString(2, "Prova1");
               s.executeUpdate();
               } catch (SQLException sqle) {
               if (con != null) {
                   try {
                       con.rollback();
                   } catch (SQLException sqle2) {
                       //log error
                   }
               }
           }

       }
}

classe che uso per il controllo

codice:
package db;

import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Connection;

public class Crud {

    private Connection con = null;
    
    public Crud(){
    }

    public void createCon() throws ClassNotFoundException{
        Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
        try {
            con = DriverManager.getConnection("jdbc:derby:Negozio");
            } catch (java.sql.SQLException sqle) {
            }
        
    }

    public void closeCon() throws SQLException{
         try {
                //è una versione embedded quindi va chiusa quando l'applicazione termina
                DriverManager.getConnection("jdbc:derby:Negozio;shutdown=true");
            } catch (SQLException se) {
                //Stato = 08006 chiusura OK, altrimenti si è verificato un errore
                if (!se.getSQLState().equals("08006")) {
                    throw se;
                }
            }

    }

    public boolean checkUser (String login, String password) throws ClassNotFoundException, SQLException{
        createCon();
        Utente u = null;

        ResultSet rs =con.createStatement().executeQuery("SELECT login,password FROM UTENTE WHERE login ='"+login+"AND password ='"+password+"'");
        
        if(rs.next() == false){
            closeCon();
            return false;
        }
        closeCon();
        return true;
    }
    
}
infine questo è il frame dove c'è il login

codice:
package gui;


import db.*;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;

public class PannelloLogin extends javax.swing.JPanel implements Finestra{

    public PannelloLogin() {
        initComponents();
    }

    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {

        Accedi = new javax.swing.JButton();
        login = new javax.swing.JLabel();
        pass = new javax.swing.JLabel();
        user = new javax.swing.JTextField();
        parola = new javax.swing.JPasswordField();
        Cancella = new javax.swing.JButton();

        setPreferredSize(new java.awt.Dimension(800, 600));
        setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

        Accedi.setText("Accedi");
        Accedi.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                AccediActionPerformed(evt);
            }
        });
        add(Accedi, new org.netbeans.lib.awtextra.AbsoluteConstraints(420, 330, -1, -1));

        login.setText("Username:");
        add(login, new org.netbeans.lib.awtextra.AbsoluteConstraints(280, 270, -1, -1));

        pass.setText("Password:");
        add(pass, new org.netbeans.lib.awtextra.AbsoluteConstraints(280, 300, -1, -1));
        add(user, new org.netbeans.lib.awtextra.AbsoluteConstraints(350, 260, 148, -1));
        add(parola, new org.netbeans.lib.awtextra.AbsoluteConstraints(350, 290, 148, -1));

        Cancella.setText("Cancella");
        Cancella.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                CancellaActionPerformed(evt);
            }
        });
        add(Cancella, new org.netbeans.lib.awtextra.AbsoluteConstraints(310, 330, -1, -1));
    }// </editor-fold>                        

    private void AccediActionPerformed(java.awt.event.ActionEvent evt) {                                       
        String username = user.getText();
        String password = parola.getText();
        if (username.equals("") || password.equals("")) 
            JOptionPane.showMessageDialog(null,"Compila tutti i campi!");
        else{
            Crud c = new Crud();
            try {
                if (c.checkUser(username, password) == false) {
                    JOptionPane.showMessageDialog(null, "Accesso negato");
                } else {
                    contenitore.remove(this);
                    contenitore.add(new PannelloAmministratore());
                    frame.pack();
                }
            } catch (ClassNotFoundException ex) {
                Logger.getLogger(PannelloLogin.class.getName()).log(Level.SEVERE, null, ex);
            } catch (SQLException ex) {
                Logger.getLogger(PannelloLogin.class.getName()).log(Level.SEVERE, null, ex);
            }
            }
            
        
        frame.setVisible(true);
    }                                      



    private void CancellaActionPerformed(java.awt.event.ActionEvent evt) {                                         
        user.setText("");
        parola.setText("");
    }                                        


    // Variables declaration - do not modify                     
    private javax.swing.JButton Accedi;
    private javax.swing.JButton Cancella;
    private javax.swing.JLabel login;
    private javax.swing.JPasswordField parola;
    private javax.swing.JLabel pass;
    private javax.swing.JTextField user;
    // End of variables declaration                   



}