SqlCommand

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:

  1. Rückgabetyp ist object, eine manuelle Typumwandlung ist erforderlich;
  2. Liefert die Abfrage mehrere Zeilen und Spalten, wird nur erste Zeile, erste Spalte übernommen, alle weiteren Daten werden verworfen;
  3. 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:

  1. ExecuteNonQuery(): Ausführen von INSERT/UPDATE/DELETE, gibt Anzahl betroffener Zeilen zurück
  2. ExecuteReader(): Gibt einen DataReader‑Datenstrom zurück, um mehrere Ergebnis‑Zeilen nacheinander zu lesen
  3. ExecuteXmlReader(): Lesen von XML‑Daten (selten verwendet)

Diese Methoden werden in späteren Lektionen behandelt.

SqlCommand

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert