ExecuteNonQuery: Die Verbindungseigenschaft wurde nicht initialisiert.

8

Nachmittag,          So war ich stundenlang bei diesem einen Thema und kann diesen letzten Buckel nicht wirklich überwinden. Unten ist der Code für dieses Programm, das ich schreibe:

%Vor%

Der Code wird ohne Fehler oder Warnung kompiliert, aber wenn ich ihn ausführe, sobald er auf cmd.InsertCommand.ExecuteNonQuery (); Ich erhalte den folgenden Fehler:

  

ExecuteNonQuery: Die Verbindungseigenschaft wurde nicht initialisiert.

Irgendwelche Ideen, was ich vermisst habe?

    
jladd 21.04.2012, 21:17
quelle

7 Antworten

25

Sie müssen die Verbindung zu SqlCommand zuweisen. Sie können den -Konstruktor verwenden oder die Eigenschaft :

%Vor%

Ich empfehle dringend, die using-statement für jeden Typ zu verwenden, der IDisposable like implementiert SqlConnection , es schließt auch die Verbindung:

%Vor%

Abgesehen davon müssen Sie keine neue Verbindung und DataAdapter für jeden Eintrag in foreach erstellen, auch wenn das Erstellen, Öffnen und Schließen einer Verbindung nicht bedeutet, dass ADO .NET erstellt, öffnet und schließt eine physische Verbindung, schaut sich aber nur die Verbindung an -pool für eine verfügbare Verbindung. Trotzdem ist es ein unnötiger Overhead.

    
Tim Schmelter 21.04.2012, 21:24
quelle
8

Sie initialisieren keine Verbindung. Deshalb kommt diese Art von Fehler zu Ihnen.

Ihr Code:

%Vor%

Korrigierter Code:

%Vor%     
Prasad Bhosale 27.07.2014 11:38
quelle
1

Ein paar Dinge sind hier falsch.

  1. Möchten Sie wirklich die Verbindung für jeden einzelnen Protokolleintrag öffnen und schließen?

  2. Sollten Sie nicht SqlCommand anstelle von SqlDataAdapter verwenden?

  3. Der Datenadapter (oder SqlCommand ) benötigt genau das, was die Fehlermeldung Ihnen sagt, dass er fehlt: eine aktive Verbindung. Nur weil Sie ein Verbindungsobjekt erstellt haben, wird C # nicht automatisch mitgeteilt, dass es das ist, das Sie verwenden möchten (insbesondere, wenn Sie die Verbindung nicht geöffnet haben).

Ich empfehle dringend ein C # / SQL Server-Tutorial.

    
Aaron Bertrand 21.04.2012 21:25
quelle
1

Dieser Fehler tritt tatsächlich auf, wenn der Server eine Verbindung herstellt, aber aufgrund eines Fehlers bei der Identifizierung der Verbindungsfunktions-ID nicht aufgebaut werden kann. Dieses Problem kann durch Eingabe der Verbindungsfunktion im Code gelöst werden. Dafür nehme ich ein einfaches Beispiel. In diesem Fall ist die Funktion unterschiedlich.

%Vor%     
waseem 16.08.2015 13:23
quelle
0

Das Öffnen und Schließen der Verbindung benötigt viel Zeit. Und verwenden Sie die "Verwendung" als ein anderes vorgeschlagenes Mitglied. Ich habe Ihren Code leicht geändert, aber die SQL-Erstellung und das Öffnen und Schließen OUTSIDE Ihrer Schleife. Das sollte die Ausführung ein wenig beschleunigen.

%Vor%     
Ryno Potgieter 19.04.2017 10:56
quelle
-1

versuche es einfach ..

Sie müssen die Verbindung mit connection.open() im Objekt SqlCommand.Connection öffnen, bevor Sie ExecuteNonQuery()

ausführen     
Dev 10.12.2012 06:15
quelle
-1

Doppelklicken Sie auf Ihr Formular, um form_load event.Then innerhalb dieses Ereignisses schreiben Sie command.connection="Ihr Verbindungsname";

    
user3542781 06.03.2017 11:37
quelle

Tags und Links