Falha na conexão com MySQL

Após as dicas de alguns colegas, fiz as correções necessárias, porem o problema, persiste. Mesma mensagem de erro. Lembrando que eu quero que o sistema crie os bancos através do codigo java.
Eis o codigo para ser analizado. Conto com a ajuda de vcs, pois livros e revistas não estão ajudando na solução do erro.
Grato Alex

package mysqlbdcreate;

import java.sql.*;

public class CreateAgency {

    private static final String driver = "com.mysql.jdbc.Driver";
    private static final String protocol = "jdbc:mysql://localhost/Agency";
    private static final String usuario = "sa";
    private static final String senha = "";



    public static void main(String[] args) {

            try {
                    Class.forName(driver);
                    System.out.println("Loaded driver: "+driver);

                    Connection conn = DriverManager.getConnection(protocol, usuario, senha);
                    System.out.println("Connected to: "+protocol);
                    conn.setAutoCommit(false);

                    Statement s = conn.createStatement();

                    System.out.println("Dropping exisiting tables...");
                    try {s.execute("drop table ApplicantSkill");} catch (SQLException ex){}
                    try {s.execute("drop table Applicant");} catch (SQLException ex){}
                    try {s.execute("drop table JobSkill");} catch (SQLException ex){}
                    try {s.execute("drop table Job");} catch (SQLException ex){}
                    try {s.execute("drop table Matched");} catch (SQLException ex){}
                    try {s.execute("drop table Customer");} catch (SQLException ex){}
                    try {s.execute("drop table Location");} catch (SQLException ex){}
                    try {s.execute("drop table Skill");} catch (SQLException ex){}
                    System.out.println("Dropped tables");

                    System.out.println("Creating new tables...");
                    s.execute("create table Skill(name varchar(16), description varchar(64))");
                    s.execute("create table Location(name varchar(16), description varchar(64))");
                    s.execute("create table Applicant(login varchar(16), name varchar(64), email varchar(64), summary varchar(512), location varchar(16))");
                    s.execute("create table ApplicantSkill(applicant varchar(16), skill varchar(16))");
                    s.execute("create table Customer(login varchar(16), name varchar(64), email varchar(64), address1 varchar(64), address2 varchar(64))");
                    s.execute("create table Job(ref varchar(16), customer varchar(16), description varchar(512), location varchar(16))");
                    s.execute("create table JobSkill(job varchar(16), customer varchar(16), skill varchar(16))");
                    s.execute("create table Matched(applicant varchar(16), job varchar(16), customer varchar(16), exact boolean)");
                    System.out.println("Created tables");

                    System.out.println("Inserting table records...");
                    s.execute("insert into Location values ('London','London UK')");
                    s.execute("insert into Location values ('Washington','Washington DC, USA')");
                    s.execute("insert into Location values ('Verona','Verona, Renaissance Italy')");
                    s.execute("insert into Location values ('Wessex','Wessex, Kingdom of England')");

                    s.execute("insert into Skill values ('Tree Surgeon','Tree Surgeon')");
                    s.execute("insert into Skill values ('Cigar Maker','Cigar Maker')");
                    s.execute("insert into Skill values ('Bodyguard','Bodyguard')");
                    s.execute("insert into Skill values ('Cook','Cook')");
                    s.execute("insert into Skill values ('Lawyer','Lawyer')");
                    s.execute("insert into Skill values ('Critic','Critic')");

                    s.execute("insert into Applicant values ('juliet','Juliet Capulet', 'juliet@capulet.co' , 'Dutiful daughter', 'London' )");
                    s.execute("insert into Applicant values ('romeo','Romeo Montague', 'romeo@montague.co' , 'Dutiful son', 'Wessex' )");
                    s.execute("insert into Applicant values ('julius','Julius Caesar', 'julias@caesar.co' , 'Roman Emperor', 'Washington' )");
                    s.execute("insert into Applicant values ('brutus','Marcus Brutus', 'marcus@brutus.co' , 'Roman Senator', 'Washington' )");
                    s.execute("insert into Applicant values ('proteus','Proteus', 'proteus@verona.co' , 'Gentleman', 'Verona' )");
                    s.execute("insert into Applicant values ('valentine','Valentine', 'valentine@verona.co' , 'Gentleman', 'Verona' )");

                    s.execute("insert into ApplicantSkill values ('juliet', 'Cook')");
                    s.execute("insert into ApplicantSkill values ('romeo', 'Cook')");
                    s.execute("insert into ApplicantSkill values ('romeo', 'Bodyguard')");
                    s.execute("insert into ApplicantSkill values ('julius', 'Tree Surgeon' )");
                    s.execute("insert into ApplicantSkill values ('julius', 'Tree Surgeon' )");
                    s.execute("insert into ApplicantSkill values ('brutus', 'Critic' )");
                    s.execute("insert into ApplicantSkill values ('brutus', 'Lawyer' )");
                    s.execute("insert into ApplicantSkill values ('proteus', 'Lawyer' )");
                    s.execute("insert into ApplicantSkill values ('proteus', 'Critic' )");
                    s.execute("insert into ApplicantSkill values ('valentine', 'Critic' )");
                    s.execute("insert into ApplicantSkill values ('valentine', 'Cigar Maker' )");

                    s.execute("insert into Customer values ('george','George Washington', 'george@washinton.co', 'White House', 'Washington')");
                    s.execute("insert into Customer values	('winston','Winston S Churchill', 'winston@churchill.co', '10 Downing Street', 'London')");
                    s.execute("insert into Customer values	('abraham','Abraham Lincoln', 'abe@lincoln.co', 'Springfield', 'Illinois')");
                    s.execute("insert into Customer values	('alfred','Alfred the Great', 'alf@great.co', 'Wessex', 'England')");

                    s.execute("insert into Job values ('Tree pruner', 'george', 'Must be honest', 'Washington')");
                    s.execute("insert into Job values ('Cigar trimmer', 'winston', 'Must like to talk and smoke', 'London')");
                    s.execute("insert into Job values ('Theatre goer', 'abraham', 'Should be intelligent and articulate', 'Washington')");
                    s.execute("insert into Job values ('Cake maker', 'alfred', 'Should have a good sense of smell', 'Wessex')");

                    s.execute("insert into JobSkill values ('Tree pruner','george','Tree Surgeon')");
                    s.execute("insert into JobSkill values ('Cigar trimmer', 'winston', 'Cigar Maker')");
                    s.execute("insert into JobSkill values ('Cigar trimmer', 'winston', 'Critic')");
                    s.execute("insert into JobSkill values ('Theatre goer', 'abraham', 'Bodyguard')");
                    s.execute("insert into JobSkill values ('Theatre goer', 'abraham', 'Lawyer')");
                    s.execute("insert into JobSkill values ('Theatre goer', 'abraham', 'Critic')");
                    s.execute("insert into JobSkill values ('Cake maker', 'alfred', 'Cook')");

                    System.out.println("Inserted records");

                    conn.commit();
                    s.close();
                    conn.close();
                    System.out.println("Committed transaction and closed connection");
            }
            catch (SQLException ex) {
                    System.out.println("SQL Exception thrown: "+ex);
                    ex.printStackTrace();
            }
            catch (ClassNotFoundException ex) {
                    System.out.println(ex);
                    ex.printStackTrace();
            }

    }

}

O a exceção pe disparada logo depois da mensagem Loaded Driver,
o que me faz pensar que não é por culpa da linha
“Class.forName(driver);”

SQL Exception thrown: java.sql.SQLException: Unable to connect to any hosts due to exception: java.net.ConnectException: Connection refused: connect

Sua conexão está sendo recusada…nem olhei teu cod direito q o cansaço jah tah pegando,mas esse Agency tah disponível(naum tem algum outro bd usando?)…tem mais alguem usando o seu localhost(tomcat por exemplo)?Posta um stacktrace completo do erro!

Com o stacktrace fica mais fácil de analisar, vc tem certeza que o banco não tem senha???