Opérations d’insertion avec Dapper
- Dapper propose la méthode d’extension
Execute()pour exécuter des requêtes SQL d’insertion, de mise à jour et de suppression, elle renvoie le nombre de lignes affectées (int). - Méthode d’insertion : écrire manuellement une requête
INSERTavec des emplacements de paramètres@NomParamètre; transmettre un objet entité pour mapper automatiquement les paramètres et éviter les injections SQL. - Syntaxe :
INSERT INTO NomTable(Colonne1,Colonne2...) VALUES(@Param1,@Param2...)
Exemple
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.Lire la chaîne de connexion
var connStr = ConfigurationManager.ConnectionStrings["StudentConnection"].ConnectionString;
// 2.using libère automatiquement la connexion à la base de données
using (IDbConnection db = new MySqlConnection(connStr))
{
// 3.Écrire la requête d’insertion sur la table student
string sql = @"INSERT INTO student (FirstName, LastName, Email)
VALUES (@FirstName, @LastName, @Email)";
// 4.Créer l’objet entité
var stu = new Student()
{
FirstName = "foxdevelop",
LastName = "com",
Email = "admin@foxdevelop.com"
};
// 5.Exécuter l’insertion et récupérer le nombre de lignes modifiées
int rows = db.Execute(sql, stu);
// 6.Vérifier les données insérées par une requête
List<Student> stuList = db.Query<Student>("SELECT * FROM student").ToList();
}
Console.ReadKey();
}
}
// Classe entité Student (les noms des propriétés doivent correspondre aux paramètres @ du SQL)
public class Student
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string Email { get; set; }
}
}Langage du code : HTML, XML (xml)
Remarques
- Règles de mappage des paramètres
Dapper associe automatiquement les propriétés de l’entité aux paramètres@xxxde la requête SQL. La casse n’est pas prise en compte, mais il est recommandé de conserver des noms identiques. - Valeur de retour de Execute
int rowsAffected = db.Execute(sql, stu);
- Valeur retournée ≥1 : insertion réussie ;
- Valeur retournée 0 : aucune ligne n’a été insérée.
- Configuration de la chaîne de connexion (App.config)
<configuration>
<connectionStrings>
<add name="StudentConnection"
connectionString="server=localhost;database=testdb;uid=root;pwd=123456"
providerName="MySql.Data.MySqlClient"/>
</connectionStrings>
</configuration>Langage du code : HTML, XML (xml)
Récupérer l’ID de clé primaire auto‑incrémentée (MySQL)
Si la table student possède une clé primaire auto‑incrémentée Id, récupérez l’identifiant de l’enregistrement nouvellement créé :
string sql = @"INSERT INTO student (FirstName, LastName, Email)
VALUES (@FirstName, @LastName, @Email);
SELECT LAST_INSERT_ID();";
long newStudentId = db.ExecuteScalar<long>(sql, stu);Langage du code : HTML, XML (xml)
Insertion
Previous: Premier exemple
Next: Opération de mise à jour