Inserção

Operações de inserção com Dapper

  1. O Dapper disponibiliza o método de extensão Execute() para executar comandos SQL de inserção, atualização e exclusão, retorna o número de linhas afetadas (int).
  2. Estratégia de inserção: escreva manualmente o comando INSERT com marcadores de parâmetro @NomeDoParametro; passe um objeto de entidade para mapear os parâmetros automaticamente e evitar injeção de SQL.
  3. Sintaxe: INSERT INTO NomeTabela(Coluna1,Coluna2...) VALUES(@Param1,@Param2...)

Exemplo

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.Ler string de conexão
            var connStr = ConfigurationManager.ConnectionStrings["StudentConnection"].ConnectionString;

            // 2.using libera automaticamente a conexão com o banco de dados
            using (IDbConnection db = new MySqlConnection(connStr))
            {
                // 3.Montar SQL de inserção para a tabela student
                string sql = @"INSERT INTO student (FirstName, LastName, Email) 
                               VALUES (@FirstName, @LastName, @Email)";

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

                // 5.Executar inserção e capturar quantidade de linhas afetadas
                int rows = db.Execute(sql, stu);

                // 6.Consultar para validar os dados inseridos
                List<Student> stuList = db.Query<Student>("SELECT * FROM student").ToList();
            }

            Console.ReadKey();
        }
    }

    // Classe de entidade Student (nomes das propriedades devem coincidir com os parâmetros @ do SQL)
    public class Student
    {
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public string Email { get; set; }
    }
}Code language: HTML, XML (xml)

Observações

  1. Regras de mapeamento de parâmetros
    O Dapper faz o casamento automático entre as propriedades da entidade e os parâmetros @xxx do SQL. Não diferencia maiúsculas de minúsculas, mas é recomendado manter os nomes idênticos.
  2. Valor de retorno do Execute
    int rowsAffected = db.Execute(sql, stu);
  • Retorno ≥1: inserção bem‑sucedida;
  • Retorno 0: nenhuma linha foi inserida.
  1. Configuração da string de conexão (App.config)
<configuration>
  <connectionStrings>
    <add name="StudentConnection" 
         connectionString="server=localhost;database=testdb;uid=root;pwd=123456" 
         providerName="MySql.Data.MySqlClient"/>
  </connectionStrings>
</configuration>Code language: HTML, XML (xml)

Obter ID da chave primária autoincremental de novo registro (MySQL)

Se a tabela student tiver uma chave primária autoincremental Id, recupere o identificador do registro recém‑adicionado:

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

long newStudentId = db.ExecuteScalar<long>(sql, stu);Code language: HTML, XML (xml)

Inserção

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *