import java.sql.*;
import java.util.*;
import javax.swing.JOptionPane;

public class CriaConta {
    
    public static void main( String args[] ) {
        String url = "jdbc:odbc:Banco";
        String username = "sa";
        String password = "sa";
        Connection connection = null;
        int agencia = 0;        
        
        // Cria a conexão com o banco
        try {
            Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver" );
            connection = DriverManager.getConnection( url, username, password );
        }
        catch ( ClassNotFoundException cnfex ) {
            System.err.println( "Driver JDBC/ODBC nao encontrado." );
            cnfex.printStackTrace();
            System.exit( 1 );  
        }
        catch ( SQLException sqlex ) {
            System.err.println( "Falha na conexao." );
            sqlex.printStackTrace();
            System.exit( 1 );              
        }
        
        // Cria a conta
        try {
            Statement statement = connection.createStatement();
        
            // Gera o número da conta
            ResultSet resultSet = statement.executeQuery( 
                "select max(conta) from contas" );
            resultSet.next();
            int conta = resultSet.getInt(1) + 1;
            
            // Obtém o nome do cliente
            String nome = JOptionPane.showInputDialog(null, 
                "Entre com o nome do cliente:", "Cria Conta", 
                JOptionPane.QUESTION_MESSAGE);
            
            if (nome == null) { // botão cancel
                statement.close();
                connection.close();  
                System.exit(1);
            }
            
            // Obtém o número da agência
            String ag = JOptionPane.showInputDialog(null, 
                "Entre com o número da agencia:", "Cria Conta", 
                JOptionPane.QUESTION_MESSAGE);

            if (ag == null) { // botão cancel
                statement.close();
                connection.close();  
                System.exit(1);
            }
            
            try {
                agencia = Integer.parseInt(ag.trim()); 
            } catch (NumberFormatException nfe) { 
                System.err.println("Código da agência inválido.");
                statement.close();
                connection.close();  
                System.exit(1);
            }
                 
            // Executa a stored procedure
            statement.execute( "execute insert_contas_1 " + conta + "," +
                nome + "," + agencia + ", 0.00" );
            
            JOptionPane.showMessageDialog(null, "Conta criada com sucesso.", 
                "Cria Conta", JOptionPane.INFORMATION_MESSAGE);    
                     
            // Fecha a conexão com o banco
            statement.close();
            connection.close();
            System.exit(0); 
        }
        catch ( SQLException sqlex ) {
            sqlex.printStackTrace();
            System.exit(1);
        }

    }
}


