
en este artículo, le mostraré cómo puede obtener el ID del último registro insertado en la base de datos MySQL.
he demostrado cómo recuperar el ID del último registro insertado en MS Access y SQL Server en estos artículos:
vamos a hacer lo mismo para MySQL. ¿
así, cómo obtener el ID del último inserta registro en base de datos MySQL? La respuesta es: depende… Sí, dependerá de cómo y cuándo usted necesita obtener esa información. ¿
que desea obtener el último registro insertado o la más grande que existe? Piénsalo…
hay 4 enfoques que puede utilizar:
- obtener el ID mediante una consulta de selección en orden descendente: seleccione el ID de la tabla orden de ID DESC LIMIT 1
utiliza una instrucción SELECT con la cláusula ORDER BY que ordena los registros por ID en orden descendente (DESC), limitar el número de registros devueltos en el 1. (LÍMITE 1).
Nota: no siempre el mayor será el último. Un usuario puede introducir manualmente un registro fuera de la orden y, en este caso, no hay ninguna manera de saber lo que la última utilizando las opciones 1 y 2.
- el ID del último registro añadido el comando INSERT INTO utilizando la propiedad LastInsertedId del objeto Command de conector de MySQL
esta opción es muy simple. Acaba de obtener el valor de la propiedad LastInsertedId del objeto de comando utilizado en la conexión. Aquí está un ejemplo de código:
si (cmd. LastInsertedId! = 0) cmd. Parámetros. Add (new MySqlParameter ("ultimoId", cmd. LastInsertedId)); volver convert.ToInt32 (cmd. Parámetros ["@ultimoId"]. Valor);
generalmente, para obtener el último registro insertado, la opción 4 es más fácil utilizar, pero tienes que tener en cuenta las siguientes complicaciones:
- transacciones simultáneas pueden cambiar el valor del último registro antes de utilizar la función LAST_INSERT_ID () y luego obtienes un valor que no coincide con lo real;
- la función solo funcionará si la instrucción INSERT INTO funcionó sin errores;
- si hay una eliminación de registros que pueden afectar el resultado;
por lo que la forma es analizar el escenario de ejecución de consulta cuidadosamente, teniendo en cuenta los factores que pueden actuar en el momento de la ejecución de la consulta.
a continuación, voy a mostrar cómo utilizar la función en un escenario simple.
recursos utilizados:
Nota: descarga y uso la comunidad versión VS 2015; Es gratis y es equivalente a la versión profesional.
creación de la tabla de ejemplo
, necesitará tener instalada la versión de la comunidad de MySQL, MySQL Connector/NET, MySQL Workbench y al menos la versión 2013 o 2015 VS VS comunitario o profesional.
creación de los estudiantes
vamos a crear una tabla llamada alumnos en una base de datos MySQL con el MySQL WorkBench.
la tabla tiene la siguiente estructura:
tenga en cuenta que el ID del campo es una clave principal y Auto incremento, que significa que su valor se incrementará automáticamente por el DBMS después de la inserción de un registro.
creando el proyecto en el Visual Studio comunidad 2015
abrir Visual Studio comunidad 2015 y haga clic en nuevo proyecto. Seleccione la plantilla aplicación de Windows Forms y Visual c#. A continuación, escriba el nombre Mysql_LastID y haga clic en el botón Aceptar.
Instale el conector de MySQL a través de Nuget
en el menú herramientas, haga clic en Administrador de paquetes de Nuget y luego en administrar paquetes de Nuget para solución.
haga clic en la ficha examinar, introduzca el conector de MySQL y elija la MySql paquete. fecha que marca el proyecto para el que desea instalar y haga clic en instalar.
define la interfaz con el usuario en la forma Form1.cs
en la forma Form1.cs incluye etiquetas de 4, 2 TextBox y dos botones y 1 DataGridView, como la disposición a continuación:
implementar el código para obtener el ID del último registro insertado
en este ejemplo estoy utilizando un código muy simple en el formulario para mostrar el uso de los recursos. No estoy haciendo validaciones o tratando con errores.
en el Form1.cs forma establece la cadena de conexión y un objeto MySqlConnection:
string conexaoMySQL = _ "server = localhost; id de usuario = root, contraseña = *** ***; d base de datos = Registro"; MySqlConnection con = null;
para mostrar los registros en el método que estoy usando:
público DataTable SelecionaAlunos () {tratar {String sql = "seleccione * de los estudiantes"; con = new MySqlConnection (conexaoMySQL _); MySqlCommand cmd = new MySqlCommand (sql, con); MySqlDataAdapter da = nuevo () MySqlDataAdapter; del. SelectCommand = cmd; DataTable dt = new () de la tabla de datos; del. Llenar (dt); volver dt; } catch (Exception ex) {throw ex; }}
estoy llevando los datos en el evento Load:
privado void Form1_Load (objeto sender, EventArgs e) {dgvDados. DataSource = SelecionaAlunos (); }
estoy insertando registros en la tabla de estudiante mediante el evento Click del botón Insertar:
privado void btnInserir_Click (objeto sender, EventArgs e) {prueba {int ultimoID = InserirAluno (txtFirstName, txtEmail. texto); lblResultado. texto = ultimoID. ToString (); dgvDados. DataSource = SelecionaAlunos (); } catch (Exception ex) {MessageBox.Show ("error:" + ex. Mensaje); }}
en el método InserirAluno (), estoy incluyendo los datos y devolver un int que es el valor del último ID insertado en la tabla:
público int InserirAluno (string nombre, string _ email) {prueba {String sql = "Inserte en valores del estudiante (nombre, correo electrónico) (@nome, @email)"; con = new MySqlConnection (conexaoMySQL _); MySqlCommand cmd = new MySqlCommand (sql, con); cmd. Parámetros. AddWithValue ("@nome", _ nombre); cmd. Parámetros. AddWithValue ("@email", _ email); con. (Abierta); cmd. ExecuteNonQuery (); Comprueba si hay un último inserta id y agrega un / / parámetro a tratarlo si (cmd. LastInsertedId! = 0) cmd. Parámetros. Add (new MySqlParameter ("ultimoId", cmd. LastInsertedId)); Devuelve el identificador de las filas de nuevo y convertir a Int64 a Int32 (int). volver convert.ToInt32 (cmd. Parámetros ["@ultimoId"]. Valor); } catch (Exception ex) {throw ex; } finally { con. (Cercano); }}
del proyecto e insertar un registro, vemos el resultado a continuación muestra el último registro ID incluido:
tomar el proyecto completo aquí: MySQL_LastID.zip
Comments
0 comments
Twitter
RSS