如何从循环外部访问变量?

时间:2016-03-17 13:50:12

标签: c# mysql

我正在尝试用C#console application创建数据库浏览器。

现在我有一段代码检查MySql Server的登录数据,但它包含在while循环中。 这意味着while循环中的变量basicConn是不可访问的,所以我不能在循环外使用它。 现在我在循环之前声明了变量并填充了循环内部,但是在循环之后我想使用连接但是我得到错误:“使用未分配的局部变量`basicConn'”。

这是我的代码:

//查看视频内容,同时观看漫画。     bool check1 = false;     // Er mogen maximaal 3 foute登录注册gemaakt worden;     int failed = 0;

MySqlConnection basicConn;

Console.WriteLine ("Log hier in om verbinding te maken met de MySql server.\n");

//Blijf alles wat in deze whileLoop staat herhalen tot het goed is gegaan;
while (check1 == false)
{
    //Als er 3 fouten zijn gemaakt met inloggen wordt het programma gesloten;
    if (fails < 3 && fails >= 0)
    {
        Console.WriteLine ("Poging {0}", fails + 1);

        //Hostnaam;
        string host = "";
        Console.Write ("Hostname: ");
        host = Console.ReadLine ();

        //Gebruikersnaam;
        string gebruikersnaam = "";
        Console.Write ("Gebruikersnaam: ");
        gebruikersnaam = Console.ReadLine ();

        //Wachtwoord;
        string wachtwoord = "";
        Console.Write ("Wachtwoord: ");
        wachtwoord = Console.ReadLine ();

        //MySql Connectie basis;
        string connString = "Server=" + host + ";Uid=" + gebruikersnaam + ";Password=" + wachtwoord + ";";
        basicConn = new MySqlConnection (connString);

        try
        {
            //MySQl Connectie maken;
            basicConn.Open ();

            Console.WriteLine ("Connectie is gemaatk!");

            check1 = true;
        }
        catch (Exception)
        {
            Console.WriteLine ("Er is iets misgegaan met een connectie maken, probeer het opnieuw.\n\n");

            check1 = false;

            fails += 1;
        }
    }
    else
    {
        Console.WriteLine ("Je aantal pogingen zijn mislukt!\nHet programma wordt gesloten.");

        //Laat het programma 1.5 seconden wachten tot het verdergaat;
        Thread.Sleep (1500);
        //Laat het programma sluiten;
        Environment.Exit (1);
    }
}


//          ===============================================================================================================================


MySqlCommand db = basicConn.CreateCommand ();
db.CommandText = "SHOW DATABASES";
MySqlDataReader Read_db;
Read_db = db.ExecuteReader ();
while (Read_db.Read()) {
    string row = "";
    for (int i = 0; i < Read_db.FieldCount; i++)
        row += Read_db.GetValue (i).ToString ();
    Console.WriteLine (row);
}
Read_db.Close ();

2 个答案:

答案 0 :(得分:1)

将第一行更改为:

MySqlConnection basicConn = null;

并且不要忘记在循环之后检查它是否仍然为空。

答案 1 :(得分:0)

需要使用循环外的默认值

来声明它
MySqlConnection basicConn = new MySqlConnection()

或同等学历。基本上编译器不知道它是否在循环中设置,因此它认为它可能需要使用循环外的值集。在您的情况下,它尚未设置,因此错误。