Einführung in SqlCommand
SqlCommand kapselt die auszuführenden SQL‑Anweisungen ein. Über eine bereits aufgebaute Datenbankverbindung sendet es Befehle an die Datenbank und holt die Ausführungsergebnisse ab.
Der Konstruktor akzeptiert zwei Parameter: SQL‑Text (cmdText) und Datenbank‑Verbindungsobjekt (SqlConnection).
Einfaches Beispiel
Installieren Sie SQL Server und legen Sie die Tabelle Article mit einem Testdatensatz an.
private void button1_Click(object sender, EventArgs e)
{
// 1. Verbindungszeichenfolge definieren
string connectionString = "User ID=sa;pwd=qweqwe;initial catalog=DB;Data Source=.;";
// 2. Verbindungsobjekt erstellen
SqlConnection conn = new SqlConnection(connectionString);
// 3. Auszuführende SQL‑Anweisung festlegen
string cmdText = "SELECT GETDATE(),count(1) FROM [DB].[dbo].[Article]";
// 4. Kommando‑Objekt erstellen, SQL und Verbindung verbinden
SqlCommand command = new SqlCommand(cmdText, conn);
conn.Open(); // Datenbankverbindung öffnen
// ExecuteScalar():Führt SQL aus und liefert den Wert aus [erste Zeile, erste Spalte] als Objekt‑Typ
object res = command.ExecuteScalar();
MessageBox.Show(res.ToString());
conn.Close(); // Verbindung schließen
}Code-Sprache: C# (cs)
SQL‑Server‑Tabelle
CREATE TABLE Article(
id INT PRIMARY KEY IDENTITY(1,1),
Title NCHAR(10) NULL,
AddTime NCHAR(10) NULL
);Code-Sprache: SQL (Structured Query Language) (sql)
Kernmethode: ExecuteScalar()
- Aggregat‑Abfragen ausführen:
COUNT(),MAX(),MIN(),SUM() - Einen einzelnen Wert abfragen, z. B. aktuelle Datenbank‑Zeit, automatisch hochgezählter Primärschlüssel‑ID
Hinweise:
- Rückgabetyp ist
object, eine manuelle Typumwandlung ist erforderlich; - Liefert die Abfrage mehrere Zeilen und Spalten, wird nur erste Zeile, erste Spalte übernommen, alle weiteren Daten werden verworfen;
- Vor dem Aufruf muss die Verbindung mit
conn.Open()geöffnet werden.
Empfohlene Schreibweise
Verwenden Sie die using‑Anweisung zur automatischen Freigabe von Verbindungsressourcen, um Verbindungslecks durch vergessenes Schließen zu vermeiden:
string connectionString = "User ID=sa;pwd=qweqwe;initial catalog=DB;Data Source=.;";
string cmdText = "SELECT GETDATE(),count(1) FROM [DB].[dbo].[Article]";
using (SqlConnection conn = new SqlConnection(connectionString))
{
SqlCommand command = new SqlCommand(cmdText, conn);
conn.Open();
object res = command.ExecuteScalar();
MessageBox.Show(res.ToString());
}
// Beim Verlassen des using‑Blocks wird die Verbindung automatisch freigegeben. Manuelles conn.Close() ist nicht nötigCode-Sprache: JavaScript (javascript)
Ergänzung
SqlCommand bietet drei weitere häufig genutzte Ausführungsmethoden:
ExecuteNonQuery(): Ausführen von INSERT/UPDATE/DELETE, gibt Anzahl betroffener Zeilen zurückExecuteReader(): Gibt einen DataReader‑Datenstrom zurück, um mehrere Ergebnis‑Zeilen nacheinander zu lesenExecuteXmlReader(): Lesen von XML‑Daten (selten verwendet)
Diese Methoden werden in späteren Lektionen behandelt.
SqlCommand
Previous: Einführung und Verbindung
Next: CommandTimeout