Benutzer mit den meisten Antworten
Exception

Frage
-
Hi Leute,
ich bekomme diese Ausnahme: An Error Occured Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.
Ich vermute den Fehler in dieser Methode:
Sieht jemand wo der Fehler ist?private void befehlAusfuehren(String s) { if (eingeloggt == false) { MessageBox.Show("Bitte erst einloggen!"); return; } string strSQL = s; string strProvider = "Data Source=" + server + ";Database=" + datenbank + ";User ID=" + user + ";Password=" + passwort; try { MySqlConnection mysqlCon = new MySqlConnection(strProvider); mysqlCon.Open(); if (mysqlCon.State.ToString() == "Open") { Console.WriteLine("Database Connection Open"); Console.WriteLine("------------------------"); MySqlCommand mysqlCmd = new MySqlCommand(strSQL, mysqlCon); MySqlDataReader mysqlReader = mysqlCmd.ExecuteReader(); Console.WriteLine("Id\tName\tLastName"); Console.WriteLine("------------------------"); if (s.StartsWith("SHOW DATABASES")) //SHOW DATABASES { int tempZaehler = 0; while (mysqlReader.Read()) { if (mysqlReader.GetString(0) != null) { datenbankNamenTemp[tempZaehler] = mysqlReader.GetString(0); tempZaehler++; } } datenbankNamen = new string[tempZaehler]; for (int i = 0; i < datenbankNamen.Length; i++) { datenbankNamen[i] = datenbankNamenTemp[i]; } } if (s.StartsWith("SHOW TABLES FROM")) { int tempZaehler2 = 0; while (mysqlReader.Read()) { if (mysqlReader.GetString(0) != null) { tabellenNamenTemp[tempZaehler2] = mysqlReader.GetString(0); tempZaehler2++; } } tabellenNamen = new string[tempZaehler2]; for (int i = 0; i < tabellenNamen.Length; i++) { tabellenNamen[i] = tabellenNamenTemp[i]; } } if (s.StartsWith("SHOW COLUMNS")) { int tempZaehler3 = 0; while (mysqlReader.Read()) { if (mysqlReader.GetString(0) != null) { spaltenNamenTemp[tempZaehler3] = mysqlReader.GetString(0); tempZaehler3++; } } spaltenNamen = new string[tempZaehler3]; for (int i = 0; i < spaltenNamen.Length; i++) { spaltenNamen[i] = spaltenNamenTemp[i]; } } if (s.StartsWith("SHOW TRIGGERS")) { int tempZaehler4 = 0; while (mysqlReader.Read()) { if (mysqlReader.GetString(0) != null) { triggerNamenTemp[tempZaehler4] = mysqlReader.GetString(0); tempZaehler4++; } } triggerNamen = new string[tempZaehler4]; for (int i = 0; i < triggerNamen.Length; i++) { triggerNamen[i] = triggerNamenTemp[i]; } } } mysqlCon.Close(); for (int i = 0; i < triggerNamen.Length; i++) { if (triggerNamen[i] != null) { //MessageBox.Show(triggerNamen[i]); } } } catch (Exception er) { MessageBox.Show("An Error Occured" + er.Message); Console.WriteLine("An Error Occured" + er.Message); } }
Antworten
-
Hallo C.,
Du mußt hier tatsächlich nichts vermuten. Sobald die Ausnahme ausgelöst wird, kannst Du im StackTrace genau sehen, wo sich die Ausnahme ereignet hat. Ich vermute mal stark, dass Du eines der vielen hier verwendeten Arrays (à la triggerNamen) nicht dimensioniert hast (da dies z.B. in einem if-Block geschieht, der u.U. gar nicht verarbeitet wird), z.B.
string[] triggerNamen; // ist null [...] for (int i = 0; i < triggerNamen.Length; i++) {} // beim Zugriff auf Length wird NullReferenceException ausgelöst
Exception.StackTrace-Eigenschaft:
http://msdn.microsoft.com/de-de/library/system.exception.stacktrace.aspxGewusst wie: Verwenden des Ausnahmen-Assistenten:
http://msdn.microsoft.com/de-de/library/2bc80ssc(v=VS.100).aspx
P.S. Falls der Ausnahmeassistent nicht angezeigt wird, überprüfe bitte unter Debugen > Ausnahmen > Suchen > NullReferenceException ob die Ausnahme überhaupt ausgelöst wird (Häckchen unter 'Ausgelöst'). Details zur Exception kannst Du natürlich auch im Lokal-Fenster einsehen.Gruß
Marcel- Als Antwort markiert ColleMonster Mittwoch, 1. Juni 2011 12:16
Alle Antworten
-
Hallo C.,
Du mußt hier tatsächlich nichts vermuten. Sobald die Ausnahme ausgelöst wird, kannst Du im StackTrace genau sehen, wo sich die Ausnahme ereignet hat. Ich vermute mal stark, dass Du eines der vielen hier verwendeten Arrays (à la triggerNamen) nicht dimensioniert hast (da dies z.B. in einem if-Block geschieht, der u.U. gar nicht verarbeitet wird), z.B.
string[] triggerNamen; // ist null [...] for (int i = 0; i < triggerNamen.Length; i++) {} // beim Zugriff auf Length wird NullReferenceException ausgelöst
Exception.StackTrace-Eigenschaft:
http://msdn.microsoft.com/de-de/library/system.exception.stacktrace.aspxGewusst wie: Verwenden des Ausnahmen-Assistenten:
http://msdn.microsoft.com/de-de/library/2bc80ssc(v=VS.100).aspx
P.S. Falls der Ausnahmeassistent nicht angezeigt wird, überprüfe bitte unter Debugen > Ausnahmen > Suchen > NullReferenceException ob die Ausnahme überhaupt ausgelöst wird (Häckchen unter 'Ausgelöst'). Details zur Exception kannst Du natürlich auch im Lokal-Fenster einsehen.Gruß
Marcel- Als Antwort markiert ColleMonster Mittwoch, 1. Juni 2011 12:16