Problem mit Datenbank Verbindung
-
Hallo zusammen,
bin noch recht unerfahren in der Thematik.
Ich will eine Anwendung schreiben das mit Verschiedenen Tabellen einer Access-Datenbank arbeitet und erhalte den Fehler:
"Eine nicht behandelte Ausnahme des Typs "System.NullReferenceException" ist in Programm1.exe aufgetreten.
Zusätzliche Informationen: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt."
wenn folgender Abschnitt im Programm ausgeführt wird:
#pragma endregion private: System::Void tsbRefresh_Click(System::Object^ sender, System::EventArgs^ e) { toolStripStatusLabel1->Text = cbAuswahlKlasse->SelectedText; toolStripStatusLabel2->Text = dateTimePicker1->Text; toolStripStatusLabel3->Text = "SELECT * FROM " + cbAuswahlKlasse->SelectedText + "_" + dateTimePicker1->Text; dataGridView1->Rows->Clear(); dataGridView1->Refresh(); // Mit der ausgewählten Klasse verbinden try { OleDbConnection^ connection = gcnew OleDbConnection(connectionString); connection->Open(); command = connection->CreateCommand(); command->CommandText = "SELECT * FROM " + cbAuswahlKlasse->SelectedText; lesen = command->ExecuteReader(); } catch (Exception ^e) { MessageBox::Show("Bitte zuerst eine Klasse auswählen!", "Fehler"); } // Namen der Teilnehmer laden aktDatensatz = -1; while (lesen->Read()) { aktDatensatz ++; dbTeilnehmerId[aktDatensatz] = lesen->GetString(0); dbName[aktDatensatz] = lesen->GetString(1); dbVorname[aktDatensatz] = lesen->GetString(2); } for (int i = 0 ; i <= aktDatensatz; i++) { dataGridView1->Rows->Add(); dataGridView1["ColumnID", i]->Value = dbTeilnehmerId[i]; dataGridView1["ColumnName", i]->Value = dbName[i]; dataGridView1["ColumnVorname", i]->Value = dbVorname[i]; } connection->Close(); }
wenn ich die Zeile
connection->Close();
ausklammer funktioniert es ja nur ich weiß nicht wie ich dann daten aus einer anderen Tabelle laden kann?
hoffe da kann mir vielleicht jemand Helfen.
MfG
Christopher
-
Falsches Forum was du machst ist CLI/.net oder C# aber mit sicherheit kein MFC worum es in diesem Forum geht
-
Dieser Thread wurde von Moderator/in Martin Richter aus dem Forum MFC (Visual C++) in das Forum C++/CLI mit .NET verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Tut mir leid kenn mich mit diesen Abkürzungen nicht so gut aus.
-
Da du es offenbar kompilieren konntest, nehme ich an, dass es noch eine Member-Variable (ev. mit dem Designer erzeugt) mit dem Namen
connection
gibt. Denn dort woconnection->Close()
steht, ist die dasconnection
Objekt aus dem try/catch Block nicht mehr gültig/verfügbar.Also: Entferne die
connection
Member-Variable.
-
Hab's jetzt hinbekommen,
Habe übersehen das ich eine globale Variable Connection erzeugt hatte.
Daher reicht es ja einfach ein "this->" davor zu setzen.
Danke für den Hinweis.
this->connection->Close();
-
fail
-
Auweia, wieder einer der seine ganzen Variablen global macht und dann mit den ganzen haufen globalen Variablen net mehr zurande kommt und alles nur weil keine Strucktur im Programm vorhanden ist.