Usuário com melhor resposta
Recuperar Id apos um insert

Pergunta
-
Pessoal preciso de uma ajuda no seguinte.
Tenho uma aplicação que faz um insert em uma tabela e apenas manda manda dados, quero que apos ele fazer um insert, me retorne para eu guardar em uma variável o campo id da tabela.
Olhem aplicação o que ela faz só que de forma reduzida.
protected void btoEnviar_Click(object sender, EventArgs e)
{
string str_conecta = "Data Source=.\\SQLEXPRESS; Database=DBHelp;Integrated Security=SSPI;";
string str_comando = "INSERT INTO TBL_CHAMADOS (ID_EMPRESA,ID_USER,ID_PROBLEMA,DATA,DESCRICAO,IMAGEM,STATUS)"
+ "VALUES(@ID_EMPRESA,@ID_USER,@ID_PROBLEMA,@DATA,@DESCRICAO,@IMAGEM,@STATUS)";int intTamanho = System.Convert.ToInt32(fileUpload.PostedFile.InputStream.Length);
byte[] byteImagem = new byte[intTamanho];
fileUpload.PostedFile.InputStream.Read(byteImagem, 0, intTamanho);SqlConnection con = new SqlConnection(str_conecta);
try
{
SqlCommand comando = new SqlCommand(str_comando, con);
comando.Parameters.Add(new SqlParameter("@ID_EMPRESA",Session["ID_EMPRESA"]));
comando.Parameters.Add(new SqlParameter("@ID_USER",Session["ID_USER"]));
comando.Parameters.Add(new SqlParameter("@ID_PROBLEMA",dropAssunto.SelectedValue));
comando.Parameters.Add(new SqlParameter("@DATA",System.DateTime.Now));
comando.Parameters.Add(new SqlParameter("@DESCRICAO",txtProblema.Text));
comando.Parameters.Add(new SqlParameter("@STATUS","1"));
SqlParameter parametro = new SqlParameter("@IMAGEM", SqlDbType.Image);
parametro.Value = byteImagem;
comando.Parameters.Add(parametro);con.Open();
comando.ExecuteNonQuery();
limpaDados();
lblMensagem.Text = "Chamado aberto com sucesso!!";
}
catch (Exception err)
{
Response.Write(err.Message);
}
finally
{
if (con.State == ConnectionState.Open)
con.Close();
}
}
Como é um insert e o campo ID_CHAMADO é auto incrmentado, claro que não esta ai.
Bom eu preciso apos ele fazer este insert me retornar qual é o id da operação para eu mostrar em uma função.
Algo assim.
int ID = resultado da consulta.
Podem me ajudar?
Respostas
-
Maciel A.F, fiz uma modificações no seu código, veja se isto ajuda:
protected void btoEnviar_Click(object sender, EventArgs e) { //Declara o inteiro que receberá o Novo ID
int NovoID = 0
//Define o comando de inserção com o Select @@Identity no final
string str_conecta = "Data Source=.\\SQLEXPRESS; Database=DBHelp;Integrated Security=SSPI;"; string str_comando = "INSERT INTO TBL_CHAMADOS (ID_EMPRESA,ID_USER,ID_PROBLEMA,DATA,DESCRICAO,IMAGEM,STATUS)" + "VALUES(@ID_EMPRESA,@ID_USER,@ID_PROBLEMA,@DATA,@DESCRICAO,@IMAGEM,@STATUS) SELECT @@Identity"; int intTamanho = System.Convert.ToInt32(fileUpload.PostedFile.InputStream.Length); byte[] byteImagem = new byte[intTamanho]; fileUpload.PostedFile.InputStream.Read(byteImagem, 0, intTamanho); SqlConnection con = new SqlConnection(str_conecta); try { SqlCommand comando = new SqlCommand(str_comando, con); comando.Parameters.Add(new SqlParameter("@ID_EMPRESA",Session["ID_EMPRESA"])); comando.Parameters.Add(new SqlParameter("@ID_USER",Session["ID_USER"])); comando.Parameters.Add(new SqlParameter("@ID_PROBLEMA",dropAssunto.SelectedValue)); comando.Parameters.Add(new SqlParameter("@DATA",System.DateTime.Now)); comando.Parameters.Add(new SqlParameter("@DESCRICAO",txtProblema.Text)); comando.Parameters.Add(new SqlParameter("@STATUS","1")); SqlParameter parametro = new SqlParameter("@IMAGEM", SqlDbType.Image); parametro.Value = byteImagem; comando.Parameters.Add(parametro); con.Open();
//Aciona o ExecuteScalar que retorna o valor do Novo ID NovoID = Convert.ToInt32(comando.ExecuteScalar()); limpaDados(); lblMensagem.Text = "Chamado aberto com sucesso!!"; } catch (Exception err) { Response.Write(err.Message); } finally { if (con.State == ConnectionState.Open) con.Close(); } }
[]s.
Alan.- Marcado como Resposta Maciel Alves quarta-feira, 3 de março de 2010 19:14
Todas as Respostas
-
Maciel A.F, fiz uma modificações no seu código, veja se isto ajuda:
protected void btoEnviar_Click(object sender, EventArgs e) { //Declara o inteiro que receberá o Novo ID
int NovoID = 0
//Define o comando de inserção com o Select @@Identity no final
string str_conecta = "Data Source=.\\SQLEXPRESS; Database=DBHelp;Integrated Security=SSPI;"; string str_comando = "INSERT INTO TBL_CHAMADOS (ID_EMPRESA,ID_USER,ID_PROBLEMA,DATA,DESCRICAO,IMAGEM,STATUS)" + "VALUES(@ID_EMPRESA,@ID_USER,@ID_PROBLEMA,@DATA,@DESCRICAO,@IMAGEM,@STATUS) SELECT @@Identity"; int intTamanho = System.Convert.ToInt32(fileUpload.PostedFile.InputStream.Length); byte[] byteImagem = new byte[intTamanho]; fileUpload.PostedFile.InputStream.Read(byteImagem, 0, intTamanho); SqlConnection con = new SqlConnection(str_conecta); try { SqlCommand comando = new SqlCommand(str_comando, con); comando.Parameters.Add(new SqlParameter("@ID_EMPRESA",Session["ID_EMPRESA"])); comando.Parameters.Add(new SqlParameter("@ID_USER",Session["ID_USER"])); comando.Parameters.Add(new SqlParameter("@ID_PROBLEMA",dropAssunto.SelectedValue)); comando.Parameters.Add(new SqlParameter("@DATA",System.DateTime.Now)); comando.Parameters.Add(new SqlParameter("@DESCRICAO",txtProblema.Text)); comando.Parameters.Add(new SqlParameter("@STATUS","1")); SqlParameter parametro = new SqlParameter("@IMAGEM", SqlDbType.Image); parametro.Value = byteImagem; comando.Parameters.Add(parametro); con.Open();
//Aciona o ExecuteScalar que retorna o valor do Novo ID NovoID = Convert.ToInt32(comando.ExecuteScalar()); limpaDados(); lblMensagem.Text = "Chamado aberto com sucesso!!"; } catch (Exception err) { Response.Write(err.Message); } finally { if (con.State == ConnectionState.Open) con.Close(); } }
[]s.
Alan.- Marcado como Resposta Maciel Alves quarta-feira, 3 de março de 2010 19:14
-