return_generated_keys

Estou inserindo um registro no banco com a coluna cd_documeto como chave primária e autoincremento. Porém ao executar o resultset o mesmo fica vazio e não consigo pegar a 1ª String que é o cd_documento.

Alguém tem uma idéia do que esteja acontecendo?

No Mysql funciona ok, já no sql server 2000 não funciona. Estou usando o jtds.

public void inserirDocumento(Documento doc) throws SQLException {
        {
            PreparedStatement stmt;

            String sql = "insert into documento values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";

            stmt = connection.prepareStatement(sql);

            stmt.setString(1, doc.getDs_documento());
            stmt.setString(2, doc.getCd_tpdocumento());
            stmt.setString(3, doc.getCd_status());
            stmt.setString(4, doc.getCd_resp_atual());
            stmt.setString(5, doc.getObs_documento());
            stmt.setString(6, doc.getDt_criacao());
            stmt.setString(7, null);
            stmt.setString(8, doc.getDt_movimentacao());
            stmt.setString(9, null);
            stmt.setString(10, doc.getCd_depto_atual());
            stmt.setString(11, null);
            stmt.setString(12, doc.getCd_origem());
            stmt.setString(13, doc.getCd_usu_cri());
            stmt.setString(14, doc.getCd_depto_cri());
            stmt.setString(15, null);

            stmt.execute();

            stmt = connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);

            ResultSet rs = stmt.getGeneratedKeys();

            System.out.println(rs);

            rs.next();

            setAutoincrement(rs.getString(1));
        }

    }

Erro:

SEVERE: null
java.sql.SQLException: No current row in the ResultSet.
        at net.sourceforge.jtds.jdbc.JtdsResultSet.getColumn(JtdsResultSet.java:270)
        at net.sourceforge.jtds.jdbc.JtdsResultSet.getString(JtdsResultSet.java:918)

Não tenho aqui uma base SQL para testar, mas por que é que seu código tem 2 “prepareStatement” sendo que executa a inserção apenas uma vez? Acho que você deveria copiar a linha 27 no lugar da linha 07, e remover então a linha 27.

entanglement

Era isso mesmo!
Nem tinha observado!

Vlw!