Erro PreparedStatemente

Boa tarde!

Estou criando um pequeno sistema de locação de veiculos e na persistência estou utilizando PreparedStatement conforme abaixo um trecho do método para inserir carros.

sql = "insert int tb_carro values (null, ?, ?, ?)"; PreparedStatement psmt = conn.PrepareStatement(sql) psmt.setString(1, carro.getNome()); psmt.setString(2, carro.getPlaca()); psmt.setString(3, carro.getChassi());

Porém quando ele vai executar o método ele retornar que a Syntax sql possui erro infornado que ‘?’ não é um valor válido, ou seja o métodos setString, setInt e etc não estão fazendo a substituição do parametro pelo valor.
Alguem pode me dar uma ajuda com este problema? :shock:

Obrigado!

Boa tarde!!

Por exemplo aqui:

sql = "insert int tb_carro values (null, ?, ?, ?)";  

Deveria ser assim né :

sql = "insert into tb_carro values (null, ?, ?, ?)"; 

Att

É, neste caso só esqueci o “O” mas no código está certo, pois sempre crio a string sql primeiro no SGBD para depois passar para o fonte do Java substituindo pelos parametros “?”.

e pq vc passa null nesse primeiro parametro? o que te retorna o indice(0) ?, posta o restante do codigo, com as linhas onde vc abre a conexão e faz o executeUpdate().

Att

[code]
//Conexão Banco de Dados
private static Connection conexaoDb() throws ClassNotFoundException, SQLException {
String hostname = “localhost”;
String login = “root”;
String senha = “”;
String dbname = “locadora”;
String url = “jdbc:mysql://” + hostname + “/” + dbname;
Connection conexao = null;
Class.forName(“com.mysql.jdbc.Driver”);
conexao = (Connection) DriverManager.getConnection(url, login, senha);
return conexao;
}

// Método para inserção de carro o valor null passado é devido a chave primaria ser Auto increment.
// Como não estou especificando o nome das colunas que irei inserir os valores.

// Atributos de carro na Tabela
// Int AI idCarro, String not null marcarCarro, String not null modeloCarro, Int not null anoCarro,
// String not null chassiCarro, String not null corCarro, String desConservacaoCarro

protected static boolean inserirCarro(Carro c) throws ClassNotFoundException, SQLException {
    int result;
    Connection conn = conexaoDb();
    sql = "insert into tb_carro values(null,?,?,?,?,?,?,?)";
    psmt = conn.prepareStatement(sql);
    psmt.setString(1, c.getFabricanteCarro());
    psmt.setString(2, c.getModeloCarro());
    psmt.setInt(3, c.getAnoCarro());
    psmt.setString(4, c.getPlaca());
    psmt.setString(5, c.getChassiCarro());
    psmt.setString(6, c.getCorCarro());
    psmt.setString(7, c.getDesEstadoConservacaoCarro());
    result = psmt.executeUpdate(sql);
    psmt.close();
    conn.close();
    if (result >= 1) {
        return true;
    } else {
        return false;
    }
}[/code]

[quote=nero.rodrigues][code]

    result = psmt.executeUpdate(sql);

[/code][/quote]
Sem parametros…


        result = psmt.executeUpdate();

Resolvido. Obrigado!