Ciudades - persistencia Ejercicio C# - Curso de Programación C# (C Sharp)

 Ejercicio

Ciudades - persistencia

 Objetivo

Cree una nueva versión de la "base de datos de ciudades" (que mejoró el 13 de marzo), utilizando la persistencia para almacenar sus datos en lugar de archivos de texto.

 Código de Ejemplo

// Importing necessary namespaces for ADO.NET, collections, and basic functionalities
using System; // For basic functionalities like Console and Exception handling
using System.Collections.Generic; // To use List for storing city objects
using System.Data.SqlClient; // For database operations (ADO.NET)
using System.Configuration; // To retrieve connection string from app.config

// Define the City class to represent a city
class City
{
    public int Id { get; set; } // Unique identifier for the city
    public string Name { get; set; } // Name of the city
    public string Country { get; set; } // Country where the city is located
    public int Population { get; set; } // Population of the city

    // Constructor to initialize the city properties
    public City(int id, string name, string country, int population)
    {
        Id = id; // Assign the city's ID
        Name = name; // Assign the city's name
        Country = country; // Assign the country's name
        Population = population; // Assign the city's population
    }

    // Method to represent the city as a string (for easy display)
    public override string ToString()
    {
        return $"{Name}, {Country}, Population: {Population}"; // Format the city's data as a string
    }
}

// Define a class to handle the persistence (save/load) of City data to/from a SQL Server database
class CityDataPersistence
{
    private string connectionString; // Connection string to connect to the SQL Server database

    // Constructor to initialize the connection string (from app.config or directly)
    public CityDataPersistence(string connectionString)
    {
        this.connectionString = connectionString; // Store the connection string
    }

    // Method to insert a new city into the database
    public void AddCity(City city)
    {
        // SQL query to insert a new city into the Cities table
        string query = "INSERT INTO Cities (Name, Country, Population) VALUES (@Name, @Country, @Population);";

        // Establish a connection to the database
        using (SqlConnection conn = new SqlConnection(connectionString))
        {
            // Open the connection
            conn.Open();

            // Create a SqlCommand to execute the query
            using (SqlCommand cmd = new SqlCommand(query, conn))
            {
                // Add parameters to prevent SQL injection
                cmd.Parameters.AddWithValue("@Name", city.Name);
                cmd.Parameters.AddWithValue("@Country", city.Country);
                cmd.Parameters.AddWithValue("@Population", city.Population);

                // Execute the query to insert the data
                cmd.ExecuteNonQuery();
            }
        }
    }

    // Method to load all cities from the database
    public List GetCities()
    {
        List cities = new List(); // List to store all the cities from the database

        // SQL query to select all cities
        string query = "SELECT Id, Name, Country, Population FROM Cities;";

        // Establish a connection to the database
        using (SqlConnection conn = new SqlConnection(connectionString))
        {
            // Open the connection
            conn.Open();

            // Create a SqlCommand to execute the query
            using (SqlCommand cmd = new SqlCommand(query, conn))
            {
                // Execute the query and get a SqlDataReader to read the results
                using (SqlDataReader reader = cmd.ExecuteReader())
                {
                    // Read each record from the result set
                    while (reader.Read())
                    {
                        // Create a new City object for each record
                        City city = new City(
                            reader.GetInt32(0), // Id
                            reader.GetString(1), // Name
                            reader.GetString(2), // Country
                            reader.GetInt32(3)  // Population
                        );

                        // Add the city to the list
                        cities.Add(city);
                    }
                }
            }
        }

        return cities; // Return the list of cities
    }
}

// Main class to demonstrate the functionality
class Program
{
    static void Main(string[] args)
    {
        // Connection string to the database (adjust this for your environment)
        string connectionString = "Server=localhost;Database=CitiesDB;Integrated Security=True;";

        // Create an instance of CityDataPersistence to handle database operations
        CityDataPersistence persistence = new CityDataPersistence(connectionString);

        // Create some city objects to add to the database
        City city1 = new City(0, "New York", "USA", 8419600);
        City city2 = new City(0, "Tokyo", "Japan", 13929286);
        City city3 = new City(0, "Paris", "France", 2140526);

        // Add the cities to the database
        persistence.AddCity(city1);
        persistence.AddCity(city2);
        persistence.AddCity(city3);

        // Load all cities from the database
        List cities = persistence.GetCities();

        // Display the loaded cities
        Console.WriteLine("Cities in the database:");
        foreach (var city in cities)
        {
            Console.WriteLine(city); // Print each city's data
        }
    }
}

Juan A. Ripoll - Tutoriales y Cursos de Programacion© 2025 Todos los derechos reservados.  Condiciones legales.