Como inserir dados, com Resultset ou com PreparedStatement

Olá pessoal,
Estou com uma duvida, dei uma pesquisada sobre inserir dados e achei duas formar de ser feita, queria saber qual é a forma correta ou melhor de se trabalhar.
Segue um exemplo de cada um dos tipos:
ex: Resultset
private PreparedStatement stm;
private ResultSet pessoas = stm.executeSQL("Select * from pessoas);
pessoas.insertRow();
pessoas.updateInt(“id”, codigo);
pessoas.updateString(“nome”, nome);
pessoas.first();

ex:
private PreparedStatement stm;
stm.executeUpdate(“INSERT INTO dlcliente( id_cliente, nome, rua, numero, bairro, cep, obs) VALUES(”+
Utilitario.getSequencia(“dlcliente”, “id_cliente”)+",’"+
TFNome.getText()+"’,’"+
TFRua.getText()+"’,"+
TFNumero.getText()+",’"+
TFBairro.getText()+"’,’"+
TFCep.getText()+"’,’"+
TAObs.getText() +"’)");

Se alguem pode me ajudar, sou iniciante e gostaria de saber como se inseri registro e pesquisa registro no DB.
Abraço

Espero que isso lhe ajude . . .

Exemplo de PreparedStatement
=> http://www.guj.com.br/posts/list/40126.java

Leia sobre a classe ResultSetMetaData. Não sei explicar, mas acho que pode ajudar.

http://download.oracle.com/javase/1.4.2/docs/api/java/sql/ResultSetMetaData.html

[code]
public void adiciona(Cliente cliente) throws ClassNotFoundException, SQLException{
Connection c = gc.conectaBanco();
PreparedStatement stmt = c.prepareStatement(“Insert Into Cliente (telefone, celular, primeiroNome, ultimoNome, enderecoId) values (?,?,?,?,?)”);

	stmt.setInt(1, cliente.getTelefone());
	stmt.setInt(2, cliente.getCelular());
	stmt.setString(3, cliente.getNome());
	stmt.setString(4, cliente.getSobrenome());
	stmt.setInt(5, (retornaMaxId()));
	stmt.execute();
}[/code]

metodo de inserção então sempre usando PreparedStatement e não resultset?

Fala ai maicollange blz?

Cara pelo pouco conhecimento que tenho, acredito que o ResulSet seja realmente so para retorno conforme exemplo abaixo:

    public Pessoa find(int cod) throws Exception {
        open();
        Pessoa pessoa = null;
        stmt = con.prepareStatement("SELECT * FROM pessoa WHERE idpessoa=?");
        stmt.setInt(1, cod);
        rs = stmt.executeQuery();
        if (rs.next()) {
            pessoa = new Pessoa(rs.getInt("idpessoa"),
                    rs.getString("nome"),
                    rs.getString("email"),
                    rs.getDate("datanasc"));
        }
        stmt.close();
        close();
        return pessoa;
    }

Vale resaltar que rs esta definido como ResulSet

Abração 8)
Max

Eai FacaNaCaveira,
Eu estou em duvido por que eu vi um exemplo, e o cara estava usando o resultset para inserir e atualizar os dados no banco, com métodos “rs.moveToInsertRow” e “rs.updateRow”, ai queria saber qual a vantagem(se tem!) de usar assim.
Por que quase todos os exemplos aqui no guj foi como o douglastc mostrou. não seria uma boa pratica usar o resultset para fazer isso, por que pelo que eu li o resulset seria usado somente para retorno de uma consulta e navegar nos dados.

Pessoal não sei se estou conseguindo explicar a minha duvida, qualquer coisa avisa para eu tentar ser mais claro

Pessoal segue um exemplo melhor pra ajudar a explicar

[code]public class Conexao {
public Connection conecta() {
Connection result;
try {
Class.forName(driver);
conexao = DriverManager.getConnection(url, usuario, senha);
result = conexao;
} catch (ClassNotFoundException Driver) {
JOptionPane.showMessageDialog(null, “Driver não encontrado”+Driver);
result = null;
} catch (SQLException Fonte) {
JOptionPane.showMessageDialog(null, “Deu erro na conexao com a fonte de dados”);
result = null;
}
return result;
}

public ResultSet executeSQL(String sql) {
    try {
        System.out.println(sql);

        PreparedStatement stm = conexao.prepareStatement(sql, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.TYPE_FORWARD_ONLY);
        resultset = stm.executeQuery();
    } catch (SQLException sqlex) {
        JOptionPane.showMessageDialog(null, "Não foi possível executar o comando sql," + sqlex + ","
                + "o sql passado foi " + sql);
    }
    return resultset;
}

}

public class Pessoa {
public Resultset rspessoa;
public addpessoa(){
Conexao con = new Conexao();
con.conecta();
rspessoa =con.executeSQL(“select * from pessoa”);
rspessoa.moveToInsertRow();
rspessoa.updateInt(“id”, id);
rspessoa.updateString(“nome”, TFnome.getText());
rspessoa.insertRow();

}

}[/code]

Companheiro, nunca usei o resultset para inserção ou edição, sempre usei o preparedStatement, mas quanto a sua duvida ja dei uma lida sobre o resultset, e sei que ele é melhor quando se refere a inserção/update de um registro, o statement ja teria um ganho de performace quando vc vai enviar varios registros ao mesmo tempo…

estou procurando tbem mais informações… assim como vc…