Array
(
)

Pegar ultimo id inserido C Sharp Mysql

Mauricio Souza,
   - 28 mai 2013

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

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();

Pjava
   - 28 mai 2013

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.

Mauricio Souza,
   - 28 mai 2013

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

#Código

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


e depois faço assim:

#Código
int idCadastrado = Convert.ToInt32(cmm.ExecuteScalar());

Mauricio Souza,
   - 28 mai 2013

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?

Michael Sampaio
   - 02 jun 2013

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

#Código

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

Thiago Augusto
   - 02 jun 2013

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

Espero que ajude.

#Código

      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;
       }