Erro ao enviar datas no JDBC e SQL Server

Olá, estou criando um banco de dados simples, só para exercício mesmo, utilizando o [color=blue]sql server[/color] e o JDBC. aparentemente esta funcionando direito, porém percebi que ao inserir uma data, o mês enviado é diferente do mês digitado, exemplo: se eu digitar 2012-09-07 (ano, mes, dia), o valor enviado ao BD será 2012-10-07! abaixo segue o código simplificado. e comentários:

[code]public class Funcionario {

private Calendar dataNasc;

public void setDataNasc(int ano, int mes ,int dia) {
    dataNasc=Calendar.getInstance();
    dataNasc.set(ano, mes, dia);// metodo formata os inteiros como data
}

    public Calendar getDataNasc(){
    return dataNasc;
}

}[/code]

abaixo está a classe DAO e o método que utiliza o PreparedStatement

[code]private Connection connection;

public FuncionarioDAO(){
    this.connection= new ConnectionFactory().getConnection();

}
public void adiciona(Funcionario funcionario){
String sql=“insert into Funcionario(DataNascimento)values(?)”;

    try{
       //prepared statement para a inserção
        PreparedStatement smt= connection.prepareStatement(sql);
        //seta os valores
       
        smt.setDate(1, new java.sql.Date(funcionario.getDataNasc().getTimeInMillis()));
 
        //executa stmt
        smt.execute();
        smt.close();
        
        System.out.println("GRAVADO!");
        connection.close();
    }catch(SQLException e){
        throw new RuntimeException(e);
        
    }
    
}

[/code]

abaixo segue a classe principal que executará o código

[code]public class InseriDadosEmpresaX {

public static void main(String[] args) {
    
    //instanciando a clase 
  Funcionario funcionario= new Funcionario();
  
  //inserindo os contatos  
 funcionario.setDataNasc(1970,2,28);//veja que aqui inseri a data 28/02/1970
  //grave nessa conexao
 FuncionarioDAO  dao= new FuncionarioDAO();
 
 dao.adiciona(funcionario);

 System.out.println("GRAVADO!!");
  
}

}
[/code]

ao aplicar um select, seja via java ou no sql server mesmo, a data mostrada será : 28/03/1970, isto é, o programa envia sempre o mês posterior a data lançada.
alguém poderia me ajudar? :cry:

http://docs.oracle.com/javase/6/docs/api/java/util/Calendar.html#set%28int,%20int,%20int%29

Valeu, já que o mês começa a partir do zero, só foi preciso colocar um incremento negativo na variável mes do classe funcionario.