Pegar ultimo id inserido C Sharp Mysql

28/05/2013

Como posso pegar o ultimo id inserido no banco de dados Mysql? Estou fazendo assim a inserção:

MySqlConnection con = configuracao.Conectar();

MySqlCommand cmm = new MySqlCommand("INSERT INTO funcionarios(nome,sobrenome)VALUES('" + txtNome.Text + "','" + txtSobreNome.Text + "')");
cmm.ExecuteNonQuery();
cmm.Connection.Close();
cmm.Dispose();
con.Close();

Mauricio Souza,

Respostas

28/05/2013

Pjava

Você poderia fazer um select max(id) from tabela, guardar esse valor em uma variável e depois trabalhar com ele em seu insert se é isso que te interessa.
Responder Citar

28/05/2013

Mauricio Souza,

Acabei fazendo assim aqui, com last_insert_id() no final da query, mas não sei se essa é a maneira mais correta de fazer:

string sql = "INSERT INTO funcionarios(nome,sobrenome)VALUES(@nome,@sobrenome);Select LAST_INSERT_ID();";


e depois faço assim:



int idCadastrado = Convert.ToInt32(cmm.ExecuteScalar());
Responder Citar

28/05/2013

Mauricio Souza,

Se eu quiser fazer duas queries você sabe como posso fazer? Em relação a abrir e fechar as conexões. Tenho que fechar a conexão e abri-la novamente ou consigo fazer as duas consultas e depois fechá-las?
Responder Citar

02/06/2013

Michael Sampaio

Mauricio,
Faço da seguinte forma nao sei se sera util,
porem fasso o seguinte crio uma tabela para controlar
ids do banco salvando o nome da tabela e o id entao sempre
que vou cadastrar algo passo assim por exemplo
codigo(tabela) entao essa função verifica la na tabela codigo
o ultimo id referente a tabela que indiquei adiciona 1 salva na
tabela codigo e retorna o id valido para o campo solicitado ficaria assim

"INSERT INTO funcionarios(ID,nome,sobrenome)VALUES(“+CODIGO(FUNCIONARIO)+”,@nome,@sobrenome);
Responder Citar

02/06/2013

Thiago Augusto

Brother eu tenho essa feature que traz do banco o último ID e e incrementa 1.

Espero que ajude.

      SqlConnection conn = new SqlConnection(@"Server =(LocalDB)\v11.0;Database = banco; Integrated Security = SSPI;");
       
       public int GeraCodigo()
       {
           int codigo = 0;
           
           conn.Open();
           try
           {
               SqlCommand sql = new SqlCommand("Select MAX(codigo) From Contatos", conn);
               codigo = (int)sql.ExecuteScalar();

           }
           catch (SqlException ex)
           {
               MessageBox.Show(ex.Message);
           }

           return codigo + 1;
       } 

Responder Citar