Erro ao passar parametros usando o preparedstatement

esse eh o meu metodo mas dah erro ao chamr o metodo setInt
por que?
alguem saberia me dizer
pelo que me disseram aqui no forum o set int seta no sql o conteudo da variavel codContrato
mas agradeço a ajuda desde jah!
flw

[code]public float calculaCub(int codContrato) {

        float resultado = 0;
    PreparedStatement st1 = null;
    ResultSet rs4 = null;
    try {
        //tamanho contrato
        String s = "select tamanho from contrato where contratoId=" + codContrato + "";
        System.out.println("" + s);

        st1 = Conexao.prepareStatement(s);
        st1.setInt(1, codContrato);
        rs4 = st1.executeQuery(s);
        rs4.next();
        float tamContrato = Float.parseFloat(rs4.getString("tamanho"));
        System.out.println("" + tamContrato);
        resultado = (totcondo(codContrato) / somaC()) * tamContrato;
        System.out.println("return resultado aqui   " + resultado);
    } catch (Exception e) {
        e.printStackTrace();
    } finally {

        try {
            rs4.close();
        } catch (Exception e) {
            rs4 = null;
        }
        try {
            st1.close();
        } catch (Exception e) {
            st1 = null;
        }

    }
    return resultado;
}[/code]

acho que deveria ser:

String s = "select tamanho from contrato where contratoId = ? ";  

concordo com vc
hehe
erro de amador
flw

tah mas pera ai
esse erro nao da mais mas quando eu do um st1.executeQuery(sql)
ele dnao passa o parametro certo pra sql
ele dah o seguinte erro

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘?’ at line 1

nao sei por que vlw

acho q vc não deve fazer isto,

passar a query como parametro, pq vc ja a fez e ja setou os parametros

vc deve fazer apenas

vlw
o erro era justamente esse ai
abraços