Erro ao utilizar servlet, sql sever e JDBC [RESOLVIDO]

Olá, estou fazendo um exercício da caelum fj21 e gostaria que vocês me ajudassem a resolver um erro. Antes de tudo estou usando o sql sever(algumas pessoas me indicaram usar o mysql, mas eu prefiro utilizar o sql sever mesmo.) e o apache tomcat 7.

o exercício é bem simples:
uma pagina html foi criada para inserir dados no banco de dados através de uma servlet e uma classe DAO/JDBC. Eu testei a conexão e a classe DAO inserindo dados através de uma classe principal (sem servlet) e funcionou normalmente. Testei o servlet sem usar o banco de dados (fazendo que os dados enviados na requisição fossem escritos na pagina html de response) e também funcionou normalmente. Porém, quando adiciono a os parametros do requeste na classe DAO aparece o seguinte erro:
execeção: java.lang.RuntimeException: com.microsoft.sqlserver.jdbc.SQLServerException: Must declare the scalar variable "@P0@P1@P2"

abaixo segue o código completo:

Classe conectionFactory:

[code]public class ConnectionFactory {
String connectURL=“jdbc:sqlserver://localhost:1433;databaseName=Agenda;”;
String user=“sa”;
String password=“12345”;
public Connection getConnection(){
try{
return DriverManager.getConnection(connectURL,user,password);
}catch(SQLException e){
throw new RuntimeException(e);
}

}

}[/code]

a classe DAO:

[code]public class ContatoDAO {
private Connection connection;
public ContatoDAO(){
this.connection=new ConnectionFactory().getConnection();
}

public void adicionaContato(Contato contatos){
    String sql="insert into Contato(nome,endereco,email,dataNascimento)"
            + "values(?,?,?,?)";
    
    try{
        PreparedStatement stmt = connection.prepareStatement(sql);
        
        stmt.setString(1,contatos.getNome());
        stmt.setString(2, contatos.getEndereco());
        stmt.setString(3, contatos.getEmail());
        stmt.setDate(4, new Date(contatos.getDataNascimento().getTimeInMillis()));
        
        //executa
        
        stmt.execute();
        stmt.close();
        connection.close();                       
        
    }catch(SQLException e){
        System.out.println("Erro ao adicionar contato");
        throw new RuntimeException(e);
    }
    
} 

}[/code]

o servlet:

public class AdicionacontatoServlet extends HttpServlet{
    protected void service(HttpServletRequest request,HttpServletResponse response)
    throws IOException, ServletException{
        
        PrintWriter out = response.getWriter();
        
        // pegando os parâmetros do request
        
        String nome = request.getParameter("nome");
        String endereco= request.getParameter("endereco");
        String email= request.getParameter("email");
        String dataTexto = request.getParameter("dataNascimento");
        Calendar dataNascimento=null;
        
        //fazendo a converção da data
        
        try {
            Date date= new SimpleDateFormat("dd/MM/yy").parse(dataTexto);
            dataNascimento= Calendar.getInstance();
            dataNascimento.setTime(date);
        } catch (ParseException e) {
            out.println("Erro de conversão de data");
            return;
        }
        
        //montar o objeto contato
        
        Contato contato=new Contato();
        contato.setNome(nome);
        contato.setEndereco(endereco);
        contato.setEmail(email);
        contato.setDataNascimento(dataNascimento);
        
        //salva o contato
        
        ContatoDAO dao= new ContatoDAO();
        dao.adicionaContato(contato);
        
        out.println("<html>");
        out.println("Contato " + contato.getNome() +
        " adicionado com sucesso");
        out.println("</body>");
        out.println("</html>");
    }
    
}

[code]a pagina HTM:

Nome:
E-mail:
Endereço:
Data Nascimento:
[/code]

e no final a exceção que escrevi no inicio:

desde já agradeço.

A concatenação do SQL está errada, falta um espaço em branco antes do “values”

Olá, obrigado por responder. Acabei resolvendo sozinho. Simplesmente deletei todo o projeto e comecei do zero. Quando coloquei pra rodar o novo projeto, foi lançada uma exceção de driver não encontrado. então registrei usando o Class.forName() na fábrica de conexão e para minha surpresa funcionou. Valeu.