//Obtener Datos desde JSON URL:

        public static void ObtenerDatosJsonUrl()
        {
            int num = 1;



            do
            {
                try
                {
                    string id = Convert.ToString(num);

                    string url = $"https://restcountries.eu/rest/v2/callingcode/{id}"; //Se agrega el id del URL pasado por parametro

                    WebClient wc = new WebClient();                                    //Establece la conexion.

                    string jsonurl = wc.DownloadString(url);                           //sirve para que podamos extraer los datos y guardarlos

                    List <Root> listaPais = JsonConvert.DeserializeObject <List <Root> >(jsonurl);

                    string nombre = "", codigo = "", capital = "", region = "";
                    int    poblacion = 0;
                    double latitud = 0, longitud = 0;

                    Pais pais1 = null;

                    int contador = 0;


                    foreach (Root pais in listaPais)
                    {
                        nombre = pais.name;



                        codigo    = pais.cioc;
                        capital   = pais.capital;
                        region    = pais.region;
                        poblacion = Int32.Parse(pais.population);

                        foreach (string item in pais.latlng)
                        {
                            if (contador == 0)
                            {
                                latitud = Double.Parse(item.ToString());
                            }
                            else
                            {
                                longitud = Double.Parse(item.ToString());
                            }

                            contador++;
                        }

                        pais1 = new Pais(nombre, codigo, capital, region, poblacion, latitud, longitud);
                    }

                    Pais paisRegistro = buscarOnePais(pais1.Codigo);

                    if (paisRegistro == null)  //Si es Nulo no esta en la BD
                    {
                        insertarPais(pais1);

                        Console.WriteLine($"Pais {num} Insertado con Exito en la BD.");
                        Console.WriteLine("");
                    }
                    else  //Caso contrario lo Actualiza
                    {
                        actualizarPais(pais1, pais1.Codigo);

                        Console.WriteLine($"Pais {num} Actualizado con Exito en la BD.");
                        Console.WriteLine("");
                    }

                    num++;          //Si todo es correcto dentro del try incrementamos el contado num
                }
                catch (Exception e) //Si no tiene datos el JSON id, atrapa la Excepcion.
                {
                    Console.WriteLine($"El URL Id {num}, no contiene datos.");
                    Console.WriteLine("");

                    num++; //Si no es corrrecto Incrementamos el contador num.
                }
            } while (num < 301);
        }
        //Metodo Opcion 2 recorrer con una lista:

        //Obtener Datos desde JSON URL:

        public static void ObtenerDatosJsonUrlList()
        {
            int num = 1;



            do
            {
                try
                {
                    string id = Convert.ToString(num);

                    string url = $"https://restcountries.eu/rest/v2/callingcode/{id}";             //Se agrega el id del URL pasado por parametro

                    WebClient wc = new WebClient();                                                //Establece la conexion.

                    string jsonurl = wc.DownloadString(url);                                       //sirve para que podamos extraer los datos y guardarlos

                    List <Root> listaPais = JsonConvert.DeserializeObject <List <Root> >(jsonurl); //Se Pasa como List<> Ya que el Json URL esta entre corchetes Array

                    string nombre = "", codigo = "", capital = "", region = "";
                    int    poblacion = 0;
                    double latitud = 0, longitud = 0;

                    Pais pais1 = null;

                    int contador = 0;

                    List <Pais> lista = new List <Pais>(); //Creo una List<Pais> nueva para almacenar despues los reguistros obtenidos de la BD


                    foreach (Root pais in listaPais)
                    {
                        nombre    = pais.name;
                        codigo    = pais.cioc;
                        capital   = pais.capital;
                        region    = pais.region;
                        poblacion = Int32.Parse(pais.population);

                        foreach (string item in pais.latlng)
                        {
                            if (contador == 0)
                            {
                                latitud = Double.Parse(item.ToString());
                            }
                            else
                            {
                                longitud = Double.Parse(item.ToString());
                            }

                            contador++;
                        }


                        pais1 = new Pais(nombre, codigo, capital, region, poblacion, latitud, longitud);
                    }

                    lista = buscarAllPais(); //Obtengo Todos Los Registros.

                    bool validar = false;

                    if (lista.Count > 0)  //Si tiene algun registro.
                    {
                        foreach (Pais item in lista)
                        {
                            if (item.Codigo.Equals(pais1.Codigo)) //Si el codigo existe
                            {
                                validar = true;
                                break;
                            }
                            else // Si el codigo no existe.
                            {
                                validar = false;
                            }
                        }


                        if (validar == true)
                        {
                            actualizarPais(pais1, pais1.Codigo);

                            Console.WriteLine($"Pais {num} Actualizado con Exito en la BD.");
                            Console.WriteLine("");
                        }
                        else
                        {
                            insertarPais(pais1);

                            Console.WriteLine($"Pais {num} Insertado con Exito en la BD.");
                            Console.WriteLine("");
                        }
                    }
                    else
                    {
                        insertarPais(pais1);

                        Console.WriteLine($"Pais {num} Insertado con Exito en la BD.");
                        Console.WriteLine("");
                    }


                    num++;          //Si todo es correcto dentro del try incrementamos el contado num
                }
                catch (Exception e) //Si no tiene datos el JSON id, atrapa la Excepcion.
                {
                    Console.WriteLine($"El URL Id {num}, no contiene datos.");
                    Console.WriteLine("");

                    num++; //Si no es corrrecto Incrementamos el contador num.
                }
            } while (num < 301);
        }
        //Metodo para Obtener todos los paises:
        public static List <Pais> buscarAllPais()
        {
            Pais pais = null;

            List <Pais> listaPais = new List <Pais>();

            MySqlDataReader reader = null;

            MySqlCommand comando = null;

            MySqlConnection conexion = null;
            Conexion        con      = new Conexion();



            try
            {
                conexion = con.getConnection(); //metodo getConnection, logueamos el usuario.



                if (conexion != null)
                {
                    string query = "SELECT idPais, nombrePais, codigo, capital, region, poblacion, latitud, longitud FROM pais";


                    conexion.Open();


                    comando = new MySqlCommand(query, conexion); //Pasamos el query con el comando.


                    reader = comando.ExecuteReader(); //Ejecutamos la CONSULTA de datos y guardamos los mismos en el objeto READER.

                    if (reader.HasRows)               //verificamos si existen filas.
                    {
                        while (reader.Read())
                        {
                            int    idPais    = reader.GetInt32(0); //tambien se puede pasar como parametro el nombre de la columna ej ("idProducto")
                            string nombre    = reader.GetString(1);
                            string codigo    = reader.GetString(2);
                            string capital   = reader.GetString(3);
                            string region    = reader.GetString(4);
                            int    poblacion = reader.GetInt32(5);
                            double latitud   = reader.GetDouble(6);
                            double longitud  = reader.GetDouble(7);

                            pais = new Pais(idPais, nombre, codigo, capital, region, poblacion, latitud, longitud);

                            listaPais.Add(pais); //Guardamos el Objeto en la lista
                        }


                        //Console.WriteLine("Registro leido con Exito de la Base de Datos.");
                        //Console.WriteLine();
                    }
                    else
                    {
                        //Console.WriteLine("Error. No se encontraron Datos.");
                        //Console.WriteLine();
                    }
                }
                else
                {
                    Console.WriteLine("Error. No fue posible leer el Registro de la Base de Datos");
                    Console.WriteLine();
                }
            }
            catch (MySqlException ex)
            {
                Console.WriteLine("Error. " + ex.Message);
                Console.WriteLine();
            }
            finally
            {
                conexion.Close();
            }



            return(listaPais);
        }