Inserción

Operaciones de inserción con Dapper

  1. Dapper ofrece el método de extensión Execute() para ejecutar sentencias SQL de inserción, actualización y borrado, devuelve el número de filas afectadas (int).
  2. Forma de insertar: escribe manualmente una sentencia INSERT con marcadores de parámetro @NombreParametro; pasa un objeto de entidad para mapear parámetros de forma automática y evitar inyecciones SQL.
  3. Sintaxis: INSERT INTO NombreTabla(Columna1,Columna2...) VALUES(@Param1,@Param2...)

Ejemplo

using System.Data;
using MySql.Data.MySqlClient;
using Dapper;
using System.Configuration;
using System.Collections.Generic;

namespace DapperDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            // 1.Leer cadena de conexión
            var connStr = ConfigurationManager.ConnectionStrings["StudentConnection"].ConnectionString;

            // 2.using libera automáticamente la conexión de base de datos
            using (IDbConnection db = new MySqlConnection(connStr))
            {
                // 3.Definir SQL de inserción para la tabla student
                string sql = @"INSERT INTO student (FirstName, LastName, Email) 
                               VALUES (@FirstName, @LastName, @Email)";

                // 4.Crear objeto de entidad
                var stu = new Student()
                {
                    FirstName = "foxdevelop",
                    LastName = "com",
                    Email = "admin@foxdevelop.com"
                };

                // 5.Ejecutar inserción y obtener filas afectadas
                int rows = db.Execute(sql, stu);

                // 6.Consultar para comprobar los datos insertados
                List<Student> stuList = db.Query<Student>("SELECT * FROM student").ToList();
            }

            Console.ReadKey();
        }
    }

    // Clase entidad Student (los nombres de propiedad deben coincidir con los parámetros @ del SQL)
    public class Student
    {
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public string Email { get; set; }
    }
}Lenguaje del código: HTML, XML (xml)

Notas

  1. Reglas de mapeo de parámetros
    Dapper empareja automáticamente las propiedades de la entidad con los parámetros @xxx del SQL. No distingue mayúsculas y minúsculas, pero se recomienda mantener los nombres iguales.
  2. Valor devuelto de Execute
    int rowsAffected = db.Execute(sql, stu);
  • Valor devuelto ≥1: inserción correcta;
  • Valor devuelto 0: no se insertó ninguna fila.
  1. Configuración de la cadena de conexión (App.config)
<configuration>
  <connectionStrings>
    <add name="StudentConnection" 
         connectionString="server=localhost;database=testdb;uid=root;pwd=123456" 
         providerName="MySql.Data.MySqlClient"/>
  </connectionStrings>
</configuration>Lenguaje del código: HTML, XML (xml)

Obtener ID de clave primaria autoincremental de registros nuevos (MySQL)

Si la tabla student cuenta con clave primaria autoincremental Id, obtén el identificador del registro recién insertado:

string sql = @"INSERT INTO student (FirstName, LastName, Email) 
               VALUES (@FirstName, @LastName, @Email);
               SELECT LAST_INSERT_ID();";

long newStudentId = db.ExecuteScalar<long>(sql, stu);Lenguaje del código: HTML, XML (xml)

Inserción

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *