Heim >Backend-Entwicklung >C++ >Warum schlägt „ExecuteNonQuery()' mit dem Fehler „Nicht initialisierte Verbindungseigenschaft' fehl?

Warum schlägt „ExecuteNonQuery()' mit dem Fehler „Nicht initialisierte Verbindungseigenschaft' fehl?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2025-01-03 21:49:39750Durchsuche

Why Does `ExecuteNonQuery()` Fail with an

ExecuteNonQuery: Fehler aufgrund einer nicht initialisierten Verbindungseigenschaft

Frage:

Beim Versuch, einen SQL-Befehl mit ExecuteNonQuery( ), ist ein Fehler aufgetreten, der darauf hinweist, dass die Verbindungseigenschaft nicht initialisiert wurde. Was könnte dieses Problem verursachen?

Antwort:

Die Fehlermeldung „ExecuteNonQuery: Verbindungseigenschaft wurde nicht initialisiert“ deutet darauf hin, dass das SqlConnection-Objekt nicht initialisiert wurde ordnungsgemäß dem SqlCommand-Objekt zugewiesen. Um dieses Problem zu beheben, muss die Verbindungseigenschaft von SqlCommand explizit festgelegt werden.

Lösung:

Eine Methode zum Zuweisen der Verbindung ist der Konstruktor der SqlCommand-Klasse :

cmd.InsertCommand = new SqlCommand("INSERT INTO Application VALUES (@EventLog, @TimeGenerated, @EventType, @SourceName, @ComputerName, @InstanceId, @Message) ", connection1);

Alternativ kann die Verbindungseigenschaft zugewiesen werden direkt:

cmd.InsertCommand.Connection = connection1;

Zusätzliche Überlegungen:

  • Using-Anweisung: Es wird empfohlen, die Using-Anweisung für Objekte zu verwenden, die IDisposable implementieren , wie etwa SqlConnection, um eine ordnungsgemäße Ressourcenbereinigung und Verbindungsschließung sicherzustellen.
  • Connection Pooling: Das wiederholte Erstellen und Schließen von Verbindungen (z. B. für jeden Eintrag in der foreach-Schleife) ist ein unnötiger Mehraufwand. Erwägen Sie stattdessen, die Verbindung einmal außerhalb der Schleife zu erstellen und zu öffnen und sie erst zu schließen, nachdem die Schleife abgeschlossen ist.

Beispielcode:

using (var connection1 = new SqlConnection(@"Data Source=.\sqlexpress;Initial Catalog=syslog2;Integrated Security=True"))
using (var cmd = new SqlDataAdapter())
using (var insertCommand = new SqlCommand("INSERT INTO Application VALUES (@EventLog, @TimeGenerated, @EventType, @SourceName, @ComputerName, @InstanceId, @Message) "))
{
    insertCommand.Connection = connection1;
    cmd.InsertCommand = insertCommand;

    // Other code...

    connection1.Open();
    insertCommand.ExecuteNonQuery();
}

Das obige ist der detaillierte Inhalt vonWarum schlägt „ExecuteNonQuery()' mit dem Fehler „Nicht initialisierte Verbindungseigenschaft' fehl?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn