我正在尝试用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 ();
答案 0 :(得分:1)
将第一行更改为:
MySqlConnection basicConn = null;
并且不要忘记在循环之后检查它是否仍然为空。
答案 1 :(得分:0)
需要使用循环外的默认值
来声明它MySqlConnection basicConn = new MySqlConnection()
或同等学历。基本上编译器不知道它是否在循环中设置,因此它认为它可能需要使用循环外的值集。在您的情况下,它尚未设置,因此错误。