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
Freigeben: 2025-01-03 21:49:39
Original
745 Leute haben es durchsucht

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);
Nach dem Login kopieren

Alternativ kann die Verbindungseigenschaft zugewiesen werden direkt:

cmd.InsertCommand.Connection = connection1;
Nach dem Login kopieren

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();
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage