Entwickler-Ecke

C# - Die Sprache - Wo ist der Fehler in der Methode?


Felix2000 - Mo 31.10.11 15:19
Titel: Wo ist der Fehler in der Methode?
Hi Folks !

Ich habe hier eine noch recht übersichtliche Methode, bei der während der Kompilierung ein Fehler auftritt, den ich nicht ganz verstehe. Sinn der Methode ist es eine Datenbankverbdinung zu einem MySql Datenbanksystem aufzubauen und etwas vom Typ MySqlConnection zurückzugeben. Hier der Code:


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
        //Verbindung zum MySQL Datenbanksysten herstellen
        MySqlConnection erzeugeDatenbankverbindung()
        {
            MySqlConnection connection = null;

            try
            {
                string myConnectionString = "Server = localhost; Port = 3306; Database = formulardaten; Uid = ; Pwd = ;";

                connection = new MySqlConnection(myConnectionString);
            }
            
            catch(MySqlException e)
            {
                this.Label1_Hinweisfeld.Text = e.Message;
            }

            if (connection != null
            {
                return connection;
            }
        }


Ich erhalte die Fehlermeldung: "Nicht alle Codepfade geben einen Wert zurück."
Was genau mache ich hier falsch?

Greetz
Felix


mats74 - Mo 31.10.11 15:34

Hallo Felix2000

Bei der If-Anweisung fehlt der Return-Wert, wenn der Fall "== null" eintritt.

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
if (connextion != null)
{
    return connection;
}
else
{
    return "irgendetwas";
}

Daher kommt der erwähnte Fehler.


Felix2000 - Mo 31.10.11 15:36

ah ok danke, ich frage mich jetzt allerdings, was genau ich da im else zweig zurückgeben könnte, wenn kein Objekt vom Typ MySqlConnection erzeugt werden konnte? Also wie ich das konkret im Code schrreiben könnte.


mats74 - Mo 31.10.11 15:41

Am einfachsten lässt Du die If-Anweisung weg und gibst immer den Wert "connection" zurück.
Beim Aufruf dieser Methode prüfst Du dann den Rückgabewert ensprechend auf "null".