TransWikia.com

Retorno Valor ID C# NpgsqlCommand

Stack Overflow em Português Asked by HimorriveL on September 24, 2020

Após inserir uma linha de informação em determinada tabela, preciso recuperar o valor do ID para preencher meu objeto, meu código está assim:

using (NpgsqlConnection pgsqlConnection = new NpgsqlConnection(conn)
        {           
            pgsqlConnection.Open();
            String sql = "INSERT INTO public.localpo(NOME) VALUES (:nome)";
            using (NpgsqlCommand pgsqlcommand = new NpgsqlCommand(sql, pgsqlConnection))
            {
    pgsqlcommand.Parameters.Add(new NpgsqlParameter("nome", "Ricardo Soares"));
            pgsqlcommand.ExecuteNonQuery();
            }
        }

Com esse código eu consigo inserir no banco de dados a informação sem problemas, ficando a dúvida, e para recuperar o id que foi gerado?

abaixo o codigo sql usado para gerar a tabela:

CREATE TABLE public.localpo (
id bigint NOT NULL DEFAULT nextval('localpo_id_seq'::regclass),
nome character varying(255) COLLATE pg_catalog."default",
CONSTRAINT pk_id_localpo PRIMARY KEY (id)
)

2 Answers

Existe um comando chamado returning que serve para justamente sua query retornar um dos campos, exemplo baseado na sua string:

INSERT INTO public.localpo(NOME) VALUES ('exemplo') returning id;

Correct answer by Lucas Miranda on September 24, 2020

Isso?

using (var conn = new NpgsqlConnection(conn) {           
    conn.Open();
    using (var cmd = new NpgsqlCommand("INSERT INTO public.localpo(NOME) VALUES (:nome)", conn)) {
        cmd.Parameters.Add(new NpgsqlParameter("nome", "Ricardo Soares"));
        var IdInserido = (int)cmd.ExecuteScalar();
    }
}

Coloquei no GitHub para referência futura.

Answered by Maniero on September 24, 2020

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP