Dapper Einfüge‑Operationen
- Dapper stellt die Erweiterungsmethode
Execute()zur Ausführung von INSERT‑, UPDATE‑ und DELETE‑SQL‑Anweisungen bereit, sie gibt die Anzahl der betroffenen Zeilen als int zurück. - Vorgehensweise beim Einfügen: Schreiben Sie eine handgeschriebene
INSERT‑SQL mit Parameter‑Platzhaltern@Parametername. Übergeben Sie ein Entity‑Objekt für die automatische Parameterzuordnung, um SQL‑Injektionen zu verhindern. - Syntax:
INSERT INTO Tabellenname(Spalte1,Spalte2...) VALUES(@Param1,@Param2...)
Beispiel
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.Verbindungszeichenfolge einlesen
var connStr = ConfigurationManager.ConnectionStrings["StudentConnection"].ConnectionString;
// 2.using gibt die Datenbankverbindung automatisch frei
using (IDbConnection db = new MySqlConnection(connStr))
{
// 3.SQL‑Einfügeanweisung für die Tabelle student erstellen
string sql = @"INSERT INTO student (FirstName, LastName, Email)
VALUES (@FirstName, @LastName, @Email)";
// 4.Entity‑Objekt instanziieren
var stu = new Student()
{
FirstName = "foxdevelop",
LastName = "com",
Email = "admin@foxdevelop.com"
};
// 5.Einfügung ausführen, Anzahl betroffener Zeilen ermitteln
int rows = db.Execute(sql, stu);
// 6.Daten per Abfrage überprüfen
List<Student> stuList = db.Query<Student>("SELECT * FROM student").ToList();
}
Console.ReadKey();
}
}
// Student‑Entity‑Klasse (Eigenschaftsnamen müssen mit SQL‑@‑Parameternamen übereinstimmen)
public class Student
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string Email { get; set; }
}
}Code-Sprache: HTML, XML (xml)
Hinweise
- Regeln für die Parameterzuordnung
Dapper gleicht Entity‑Eigenschaftsnamen automatisch mit den@xxx‑Parametern im SQL ab. Groß‑/Kleinschreibung spielt keine Rolle, gleiche Namen werden aber empfohlen. - Rückgabewert von Execute
int rowsAffected = db.Execute(sql, stu);
- Rückgabewert ≥1: Einfügen erfolgreich;
- Rückgabewert 0: Keine Zeilen wurden eingefügt.
- Konfiguration der Verbindungszeichenfolge (App.config)
<configuration>
<connectionStrings>
<add name="StudentConnection"
connectionString="server=localhost;database=testdb;uid=root;pwd=123456"
providerName="MySql.Data.MySqlClient"/>
</connectionStrings>
</configuration>Code-Sprache: HTML, XML (xml)
Automatisch hochgezählte Primärschlüssel‑ID neuer Datensätze abrufen (MySQL)
Falls die Tabelle student einen auto‑increment Primärschlüssel Id besitzt, ermitteln Sie die ID des neu erstellten Datensatzes:
string sql = @"INSERT INTO student (FirstName, LastName, Email)
VALUES (@FirstName, @LastName, @Email);
SELECT LAST_INSERT_ID();";
long newStudentId = db.ExecuteScalar<long>(sql, stu);Code-Sprache: HTML, XML (xml)
Einfügen
Previous: Erstes Beispiel
Next: Aktualisierungsvorgang