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)
)
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();
}
}
Answered by Maniero on September 24, 2020
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP