我创建了一个函数来检查客户端系统上安装了哪些软件,然后将信息发送到它检查的服务器,看看软件是否还在系统/数据库上......或者至少那是我的意思想要这个功能。
我目前的功能代码:
public void checkDeadPurposes()
{
List<string> dbPurposes = new List<string>();
List<string> syPurposes = new List<string>();
try
{
MySqlCommand cmd = new MySqlCommand();
cmd.Connection = conn;
cmd.CommandText = "SELECT machinePurpose FROM visualpurposes";
MySqlDataReader reader = cmd.ExecuteReader();
while(reader.Read())
{
dbPurposes.Add(reader["machinePurpose"].ToString());
}
reader.Close();
} catch (MySqlException e)
{
Console.WriteLine(e.ToString());
}
try
{
foreach(KeyValuePair<string, string> kvp in purposes)
{
syPurposes.Add(kvp.Value);
}
} catch (Exception e)
{
Console.WriteLine(e.ToString());
}
try
{
Console.WriteLine();
foreach(string sy in syPurposes)
{
if(dbPurposes.Contains(sy))
{
Console.WriteLine("Purpose Found");
} else
{
Console.WriteLine("Purpose Not Found");
}
}
Console.WriteLine("\n>>> System Purposes: " + string.Join(",", syPurposes.ToArray()));
Console.WriteLine(">>> Database Purposes: " + string.Join(",", dbPurposes.ToArray()) + "\n");
} catch (Exception e)
{
Console.WriteLine(e.ToString());
}
}
它输出:
正如您在输出中看到的那样,应该有“找到一个”和“找不到一个”的输出,但是当找不到某个内容时它似乎没有响应。
这是为什么?我该如何解决这个问题?
答案 0 :(得分:2)
系统目的中只有一个项目。
这可以按预期工作。
您确定不想在数据库目的上进行迭代吗?
foreach(string db in dbPurposes)
{
if(syPurposes.Contains(db))
{
Console.WriteLine("Purpose Found");
} else
{
Console.WriteLine("Purpose Not Found");
}
}