我目前正在C#中修补系统,我遇到了一个小并发症。我正在使用MySQL来存储我的更新列表的存档。然后,修补系统检测程序的版本,并在该版本之后下载每个修补程序。虽然我刚刚开始学习如何在C#中使用MySQL,所以我不知道该怎么做,或者调用了很多所需的函数。我想要做的是使用foreach
来调用“版本”列/行中的所有值,然后使用while循环来检查当前版本和新版本,直到它们相同。我似乎无法弄清楚如何将两者结合在一起,并找不到任何参考。C#Foreach with MySQL
using (SqlCon = new MySqlConnection(connString))
{
SqlCon.Open();
string command = "SELECT * FROM version ORDER BY version";
MySqlCommand GetLatestVersion = new MySqlCommand(command, SqlCon);
using (MySqlDataReader DR = GetLatestVersion.ExecuteReader())
{
while (DR.Read())
{
foreach(DataTable i in DR)
{
while(v1 < v2)
{
string LatestVersion = Convert.ToString(DR.GetValue(1));
string WebURL = Convert.ToString(DR.GetValue(2));
update.DownloadProgressChanged += new DownloadProgressChangedEventHandler(download);
update.DownloadFileCompleted += new AsyncCompletedEventHandler(extration);
update.DownloadFileAsync(new Uri(WebURL), tempFilePath + "patch" + Latest_Version + ".zip");
}
}
}
}
}
SqlCon.Close();
我将不胜感激任何帮助。
其实我从来没有曾尝试在sql查询中使用大于或小于符号。我不知道这是可能的,或者我会这样做,而不是试图做for循环。我正在使用程序集版本来检查数据库。我打算使用文件版本,但是当我尝试它说要很长时间才能转换成版本(); 如果你不介意问我,我还有最后一个问题。是否可以检查另一个程序的程序集版本?我发现如何使用FileVersionInfo检查文件版本,但当我无法获得错误的值时,我无能为力 – dpg199200
我假设您正在谈论主要/次要/构建/修订版本号。你可以在数据库中为每个列创建单独的列,然后将它们加载到'Version'对象中,并使用它的'CompareTo()'方法。这将阻止我上面提供的建议(除非你想写一个真正凌乱的SQL语句)。另一种选择是将程序集版本转换为本评论末尾链接的问题中指定的整数。你可以将它存储在数据库中,并在整数上做一个简单的'>'。但正如这个问题所指出的那样,这不是万无一失的。 http://bit.ly/sCyL6 –
啊,好吧,我明白了。现在只需要弄清楚如何让程序一次只处理一件事情。它不断尝试一次处理所有内容。 – dpg199200