Usuário com melhor resposta
Retornando id ultimo registro MySQL

Pergunta
-
É a primeira vez que trabalho com MySQL.
Preciso retornar o ID do último registro inserido. Está dando o seguinte erro: "Fatal error encountered during command execution"
Public Function inserePeriodo(strConexao As String, idUni As Integer, dataI As String, dataF As String) As Integer Dim conn As New MySqlConnection conn.ConnectionString = strConexao Dim strSQL As String = "INSERT INTO VisitaUnidade (idUnidade, dataInicial, dataFinal ) VALUES (@idUnidade, @dataInicial, @dataFinal);" _ & " SELECT LAST_INSERT_ID() INTO @ID;" Dim cmd As New MySqlCommand(strSQL, conn) Dim i As Integer Try With cmd.Parameters .Add(New MySqlParameter("@idUnidade", idUni)) .Add(New MySqlParameter("@dataInicial", dataI)) .Add(New MySqlParameter("@dataFinal", dataF)) End With conn.Open() i = Convert.ToInt32(cmd.ExecuteScalar) Catch ex As Exception MessageBox.Show(ex.Message) Finally conn.Close() End Try Return i End Function
Nota: Na tabela, os campos dataInicial e dataFinal são do tipo DateTime
Sergio Ivanenko
- Editado Ivanenko quinta-feira, 31 de dezembro de 2015 19:27
Respostas
Todas as Respostas
-
Boa noite Ivanenko
tenta desta forma!
select last_insert_id(); int id = Convert.ToInt32(comm.ExecuteScalar());
Estou sem Mysql para testar, se não de certo avisa que instalo aqui!
Att.
Daniel Ribeiro Arrais
Consultor Sênior
www.scrumbrasil.com.br- Sugerido como Resposta Daniel R. Arrais sexta-feira, 1 de janeiro de 2016 14:31
-
-
-
Sim.
A unica alteração foi no Select para retorno do ID do registro, ficou como sugerido.
Dim strSQL As String = "INSERT INTO VisitaUnidade (idUnidade, dataInicial, dataFinal ) VALUES (@idUnidade, @dataInicial, @dataFinal);" _ & " SELECT LAST_INSERT_ID();"
A minha dúvida é quanto ao formato das datas, na tabela ela são do tipo DateTime e estou informando uma string.
Sergio Ivanenko
-
-
Rafael.
Obrigado. Funcionou sem problemas, ficou assim:
Public Function inserePeriodo(strConexao As String, idUni As Integer, dataI As String, dataF As String) As Integer Dim conn As New MySqlConnection Dim dtI As Date = DateTime.Parse(dataI, Nothing) Dim dtF As Date = DateTime.Parse(dataF, Nothing) conn.ConnectionString = strConexao Dim strSQL As String = "INSERT INTO VisitaUnidade (idUnidade, dataInicial, dataFinal ) VALUES (@idUnidade, @dataInicial, @dataFinal);" _ & " SELECT LAST_INSERT_ID();" Dim cmd As New MySqlCommand(strSQL, conn) Dim i As Integer Try With cmd.Parameters .Add(New MySqlParameter("@idUnidade", idUni)) .Add(New MySqlParameter("@dataInicial", dtI)) .Add(New MySqlParameter("@dataFinal", dtF)) End With conn.Open() i = Convert.ToInt32(cmd.ExecuteScalar) Catch ex As Exception MessageBox.Show(ex.Message) Finally conn.Close() End Try Return i End Function
Sergio Ivanenko