Loading...
YordanDringov avatar YordanDringov 26 Точки

[Introduction to DB Apps] Problem. Change Town Names Casing

 using System;
    using System.Collections.Generic;
    using System.Data.SqlClient;
    using System.IO;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    class InitialSetup
    {
        static void Main(string[] args)
        {


            SqlConnection connection = new SqlConnection("Server=DESKTOP-281JNDE; Integrated security=true;");
            connection.Open();

            using (connection)
            {
                 var country = Console.ReadLine();
            string query = File.ReadAllText(@"../../getTowns.sql");
            SqlCommand findTownsByCountryCommand = new SqlCommand(query, connection);
            SqlParameter countryName = new SqlParameter("@Country", country);
            findTownsByCountryCommand.Parameters.Add(countryName);

            SqlDataReader reader = findTownsByCountryCommand.ExecuteReader();

            if (!reader.Read())
            {
                Console.WriteLine("No town names were affected.");
                return;
            }

            List<string> towns = new List<string>();
            while (reader.Read())
            {
                string currentTown = (string)reader["townname"];
                towns.Add(currentTown.ToUpper());
            }

            Console.WriteLine($"[{string.Join(",", towns)}]");
            }
        }
}

Не знам защо reader-a ми започва да взима стойностите от втората в базата и се получава, че при два записа в базата той ми взима втория, update-ва и не наммира първият, а при един запис не взима нищо... 

Eто ми е заявката

USE MinionsDB

SELECT TownName FROM Towns
WHERE CountryName = @Country

 

Тагове:
0
Databases Advanced - Entity Framework 25/02/2017 15:20:59
Teodor92 avatar Teodor92 569 Точки

Заради:

            if (!reader.Read())
            {
                Console.WriteLine("No town names were affected.");
                return;
            }

Това извикване започва четенето и когато има редове, този if не се изпълнява. След това:
 

            while (reader.Read())
            {
                string currentTown = (string)reader["townname"];
                towns.Add(currentTown.ToUpper());
            }

Второто извикване на reader.Read() - минава на втория ред.

Ако иска да провериш дали има резултат в reader-a използвай reader.HasRows

1
Adrian_Yordanov avatar Adrian_Yordanov 5 Точки
Ти показваш имената на ВСИЧКИ градове от дадената държава, целта не е ли да се печатат имената на ПРОМЕНИТЕ градове? Мен това ме спъва във задачата, ако някой го е направил нека сподели решението си.
0
Adrian_Yordanov avatar Adrian_Yordanov 5 Точки

Ето какво решение измислих - https://github.com/AdrianYordanov/Software-University/blob/master/Databases%20Advanced-Entity-Framework-February-2017/02.%20DB-Apps-Introduction-Exercises/Exercises/Change-Town-Names-Casing/ChangeTownNamesCasing.cs

Твоето решение също работи, но ако всички градове са upper case и изпълниш заявките, то пак ще ги отпечата като че са променение(а всъщност вече са upper case), а цаката според мен намериш само тези които са променени от lower to upper case.

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.