Heim >Backend-Entwicklung >C++ >Warum schlägt ExecuteNonQuery mit der Meldung „Verbindung nicht initialisiert' fehl?

Warum schlägt ExecuteNonQuery mit der Meldung „Verbindung nicht initialisiert' fehl?

Susan Sarandon
Susan SarandonOriginal
2025-01-03 11:10:38117Durchsuche

Why Does ExecuteNonQuery Fail with

Cannot ExecuteNonQuery: Verbindung nicht initialisiert

Ein wiederkehrendes Problem tritt auf, wenn versucht wird, eine Abfrage mit auszuführen ExecuteNonQuery:

ExecuteNonQuery: Connection property has not been initialized. 

Erklärung

Dieser Fehler tritt auf, wenn die Connection-Eigenschaft des SqlCommand-Objekts nicht zugewiesen ist. Die Connection-Eigenschaft stellt die Verbindung zwischen dem SqlCommand und der Datenbank her. Ohne eine hergestellte Verbindung kann ExecuteNonQuery nicht ausgeführt werden.

Lösung

Um dieses Problem zu beheben, weisen Sie die Datenbankverbindung der Connection-Eigenschaft des SqlCommand-Objekts zu:

cmd.InsertCommand.Connection = connection1;

Darüber hinaus empfiehlt es sich, die using-Anweisung für verfügbare Ressourcen wie SqlConnection zu verwenden. Diese Vorgehensweise stellt die ordnungsgemäße Ressourcenentsorgung sicher und verwaltet das Schließen von Verbindungen:

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) "))
        {
            // Assign connection
            insertCommand.Connection = connection1;
            
            // Set other properties...
            
            connection1.Open();
            // Execute query...
        }
    }
}

Optimierung

Um die Leistung weiter zu optimieren, vermeiden Sie die Erstellung mehrerer Verbindungen und Datenadapter für jede Iteration in einem Schleife. Stellen Sie die Verbindung und den Datenadapter einmal außerhalb der Schleife her und verwenden Sie sie innerhalb der Schleife wieder. Dies reduziert den Aufwand für das mehrfache Erstellen und Schließen von Verbindungen.

Das obige ist der detaillierte Inhalt vonWarum schlägt ExecuteNonQuery mit der Meldung „Verbindung nicht initialisiert' 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