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?
Sie müssen die Verbindung zu SqlCommand
zuweisen. Sie können den -Konstruktor verwenden oder die Eigenschaft :
Ich empfehle dringend, die using-statement
für jeden Typ zu verwenden, der IDisposable
like implementiert SqlConnection
, es schließt auch die Verbindung:
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.
Sie initialisieren keine Verbindung. Deshalb kommt diese Art von Fehler zu Ihnen.
Ihr Code:
%Vor%Korrigierter Code:
%Vor%Ein paar Dinge sind hier falsch.
Möchten Sie wirklich die Verbindung für jeden einzelnen Protokolleintrag öffnen und schließen?
Sollten Sie nicht SqlCommand
anstelle von SqlDataAdapter
verwenden?
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.
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%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%Doppelklicken Sie auf Ihr Formular, um form_load event.Then innerhalb dieses Ereignisses schreiben Sie command.connection="Ihr Verbindungsname";
Tags und Links sql-server c# insert