C # Foreach с MySQL - PullRequest
       14

C # Foreach с MySQL

0 голосов
/ 30 ноября 2011

В настоящее время я работаю над системой исправлений в C # и столкнулся с небольшим осложнением. Я использую MySQL для хранения архива для моего списка обновлений. Затем система исправлений определяет версию программы и загружает каждое исправление после этой версии. Хотя я только начал изучать, как использовать MySQL в C #, поэтому я не уверен, как это сделать, или вызвал много необходимых функций. Я хочу использовать foreach для вызова всех значений в столбце / строке «версия», а затем использовать цикл while для проверки текущей версии и новой версии, пока они не станут одинаковыми. Я просто не могу понять, как использовать два вместе и не могу найти никаких ссылок.

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();

Буду очень признателен за любую помощь.

Ответы [ 2 ]

3 голосов
/ 30 ноября 2011

просто удали внутреннюю foreach и все готово.

0 голосов
/ 30 ноября 2011

Во-первых, вам не нужно SqlCon.Close(); в конце. В конце блока using объект удаляется (точка блока using).

Вы можете изменить свой оператор выбора, чтобы выбрать только те версии, которые больше текущей версии вашей программы. Таким образом, любые выбранные записи должны быть обработаны / загружены. (Я поместил версию в кавычки в инструкции SQL ниже, потому что ваш код указывает на то, что это строка. Впрочем, вам лучше указать это значение как числовое для целей сортировки / сравнения.)

//for readability, I changed the variable name to myProgramsVersion

using (SqlCon = new MySqlConnection(connString))
{
    SqlCon.Open();
    string command = "SELECT * FROM version where version > '" + myProgramsVersion + "' ORDER BY version";
    MySqlCommand GetLatestVersion = new MySqlCommand(command, SqlCon);

    using (MySqlDataReader DR = GetLatestVersion.ExecuteReader())
    {
        while (DR.Read())
        {
            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");
        }
    }
}
...