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 wo connection->Close() steht, ist die das connection 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.


Anmelden zum Antworten