Пример #1
0
        /// <summary>
        /// Denna metoden kopplar upp sig med "master" för att sedan ta reda på alla databaser som finns.
        /// Om det inte finns en databas som heter "Familjeträd" så kommer programmet att skapa en ny databas.
        /// </summary>
        public static void Intro()
        {
            var db = new Databas();

            if (!db.DoesDatabasExist(db.Familjeträd))
            {
                Console.WriteLine("Skapar databas.");
                db.CreateDatabase(db.Familjeträd, "master");
                db.UseDatabase(db.Familjeträd, db.Familjeträd);
                db.CreateDatatable("Personer", @"
                            ID int NOT NULL Identity (1,1),
                            förnamn nvarchar(50),
                            efternamn nvarchar(50),
                            ålder int,
                            födelseland nvarchar(50),
                            födelsestad nvarchar(50),
                            född int,
                            död int,
                            dödsland nvarchar(50),
                            dödsstad nvarchar(50),
                            mor nvarchar(50),
                            far nvarchar(50),
                            morID int,
                            farID int,
                            barnID int", db.Familjeträd);
                db.CreatePeople();
                Console.WriteLine($"Skapade databasen {db.Familjeträd}");
            }
            else if (db.DoesDatabasExist(db.Familjeträd))
            {
                Console.WriteLine("Kör menyn.");
                Console.WriteLine($"Aktuell databas: {db.Familjeträd}");
            }
        }
Пример #2
0
        /// <summary>
        /// Denna metoden tar in värden ifrån Person klassen och uppdaterar dom i databasen.
        /// </summary>
        /// <param name="person"></param>
        public void Update(Person person)
        {
            var db = new Databas();

            db.SQL(@"UPDATE Personer SET Förnamn = @Förnamn, Efternamn = @Efternamn, Ålder = @Ålder,
                    Födelseland = @Födelseland, Födelsestad = @Födelsestad, Född = @Född, Död = @Död, Dödsland = @Dödsland, Dödsstad = @Dödsstad, 
                    Mor = @Mor, Far = @Far, MorID = @MorID, 
                    FarID = @FarID, BarnID = @BarnID WHERE ID = @ID", db.Familjeträd,
                   ("@Förnamn", person.Förnamn),
                   ("@Efternamn", person.Efternamn),
                   ("@Ålder", person.Ålder.ToString()),
                   ("@Födelseland", person.Födelseland),
                   ("@Födelsestad", person.Födelsestad),
                   ("@Född", person.Född.ToString()),
                   ("@Död", person.Död.ToString()),
                   ("@Dödsland", person.Dödsland),
                   ("@Dödsstad", person.Dödsstad),
                   ("@Mor", person.Mor),
                   ("@Far", person.Far),
                   ("@ID", person.ID.ToString()),
                   ("MorID", person.MorID.ToString()),
                   ("FarID", person.FarID.ToString()),
                   ("BarnID", person.BarnID.ToString())
                   );
        }
Пример #3
0
        /// <summary>
        /// Denna metoden tar in värden ifrån Person klassen och uppdaterar dom i databasen.
        /// </summary>
        /// <param name="person"></param>
        public void Create(Person person)
        {
            var db        = new Databas();
            var sqlString = "INSERT INTO Personer (Förnamn, Efternamn, Ålder, Födelseland, Födelsestad, Född, Död, Dödsland, Dödsstad, Mor, Far, MorID, FarID, BarnID) VALUES(@Förnamn, @Efternamn, @Ålder, @Födelseland, @Födelsestad, @Född, @Död, @Dödsland, @Dödsstad, @Mor, @Far, @MorID, @FarID, @BarnID)";

            try
            {
                var connString = string.Format(db.ConnectionString, db.Familjeträd);
                using (var conn = new SqlConnection(connString))
                {
                    conn.Open();
                    var cmd = new SqlCommand(sqlString, conn);
                    cmd.Parameters.AddWithValue("@Förnamn", person.Förnamn);
                    cmd.Parameters.AddWithValue("@Efternamn", person.Efternamn);
                    cmd.Parameters.AddWithValue("@Ålder", person.Ålder);
                    cmd.Parameters.AddWithValue("@Födelseland", person.Födelseland);
                    cmd.Parameters.AddWithValue("@Födelsestad", person.Födelsestad);
                    cmd.Parameters.AddWithValue("@Född", person.Född);
                    cmd.Parameters.AddWithValue("@Död", person.Död);
                    cmd.Parameters.AddWithValue("@Dödsland", person.Dödsland);
                    cmd.Parameters.AddWithValue("@Dödsstad", person.Dödsstad);
                    cmd.Parameters.AddWithValue("@Mor", person.Mor);
                    cmd.Parameters.AddWithValue("@Far", person.Far);
                    cmd.Parameters.AddWithValue("@MorID", person.MorID);
                    cmd.Parameters.AddWithValue("@FarID", person.FarID);
                    cmd.Parameters.AddWithValue("@BarnID", person.BarnID);
                    cmd.ExecuteNonQuery();
                }
            }
            catch (System.Exception except)
            {
                System.Console.WriteLine(except.Message);
            }
        }
Пример #4
0
        /// <summary>
        /// Denna metoden finns till för att radera en person ifrån databasen.
        /// </summary>
        public void Delete()
        {
            Console.WriteLine("Skriv in namnet på personen du vill radera.");
            var namn = Console.ReadLine();

            var crud   = new CRUD();
            var db     = new Databas();
            var person = Read(namn);

            if (person != null)
            {
                var mor  = Read($"{person.Mor} {person.Efternamn}");
                var far  = Read($"{person.Far} {person.Efternamn}");
                var barn = ReadID(person.BarnID);

                if (mor != null)
                {
                    mor.BarnID = 0;
                    crud.Update(mor);
                }
                else if (far != null)
                {
                    far.BarnID = 0;
                    crud.Update(far);
                }
                else if (barn != null)
                {
                    if (barn.MorID == person.ID)
                    {
                        barn.MorID = 0;
                        barn.Mor   = " ";
                        crud.Update(barn);
                    }
                    else if (barn.FarID == person.ID)
                    {
                        barn.FarID = 0;
                        barn.Far   = " ";
                        crud.Update(barn);
                    }
                }

                db.SQL("DELETE FROM Personer WHERE Förnamn = @Förnamn AND Efternamn = @Efternamn", Familjeträd,
                       ("@Förnamn", person.Förnamn),
                       ("@Efternamn", person.Efternamn));
                Console.WriteLine($"Personen har raderats ifrån databasen.");
            }
            else if (person == null)
            {
                Console.WriteLine("Personen finns inte i databasen.");
            }
        }
Пример #5
0
        /// <summary>
        /// Denna metoden läser in information om en person ifrån databasen med deras ID.
        /// </summary>
        /// <param name="ID"></param>
        /// <returns></returns>
        public Person ReadID(int ID)
        {
            var       db = new Databas();
            DataTable dt;

            dt = db.GetDataTable("SELECT TOP 1 * FROM Personer WHERE ID = @ID", Familjeträd, ("@ID", ID.ToString()));

            if (dt.Rows.Count == 0)
            {
                return(null);
            }

            return(GetPersonObject(dt.Rows[0]));
        }
Пример #6
0
        /// <summary>
        /// Huvudmenyn i programmet som sedan körs i Main metoden. Metoden innehåller flera alternativ som användaren kan välja mellan.
        /// </summary>
        public static void Meny()
        {
            bool menyLoop = true;

            while (menyLoop)
            {
                var db   = new Databas();
                var crud = new CRUD();
                Console.WriteLine("\n(1) Skapa en ny person.\n(2) Redigera ett värde hos en person.\n(3) Sök på en person.\n(4) Lista upp alla personer.");
                Console.WriteLine("(5) Uppdatera alla värden på en person\n(6) Visa syskon till en person.\n(7) Speciell sökning\n(8) Radera en person.\n");
                string choice = Console.ReadLine();

                if (choice == "1")
                {
                    crud.CreatePerson();
                }
                else if (choice == "2")
                {
                    crud.EditPerson();
                }
                else if (choice == "3")
                {
                    crud.Search();
                }
                else if (choice == "4")
                {
                    crud.ListAllPeople();
                }
                else if (choice == "5")
                {
                    crud.UpdateValues();
                }
                else if (choice == "6")
                {
                    crud.ListSiblings();
                }
                else if (choice == "7")
                {
                    crud.SpecialSearch();
                }
                else if (choice == "8")
                {
                    crud.Delete();
                }
            }
        }
Пример #7
0
        /// <summary>
        /// Denna metoden läser in information om en person ifrån databasen med deras för och efternamn.
        /// </summary>
        /// <param name="name"></param>
        /// <returns></returns>
        public Person Read(string name)
        {
            var       db = new Databas();
            DataTable dt;

            if (name.Contains(" "))
            {
                var names    = name.Split(' ');
                var lastName = names[names.Length - 1];
                dt = db.GetDataTable("SELECT TOP 1 * FROM Personer WHERE Förnamn LIKE @Förnamn AND Efternamn LIKE @Efternamn", Familjeträd,
                                     ("@Förnamn", names[0]), ("@Efternamn", lastName));
            }
            else
            {
                dt = db.GetDataTable("SELECT TOP 1 * FROM Personer WHERE Förnamn LIKE @name OR Efternamn LIKE @name ", Familjeträd, ("@name", name));
            }

            if (dt.Rows.Count == 0)
            {
                return(null);
            }

            return(GetPersonObject(dt.Rows[0]));
        }
Пример #8
0
        /// <summary>
        /// Denna metoden innehåller speciella sökningar som användaren kan göra.
        /// </summary>
        public void SpecialSearch()
        {
            var db     = new Databas();
            var person = new Person();

            Console.WriteLine("Vad för slags sökning vill du göra?\n\n(1) Lista upp personer som är födda ett visst årtal.");
            Console.WriteLine("(2) Lista upp förnamn som har ett förnamn börjar på en viss bokstav.\n(3) Lista upp personer som är från en viss stad.");
            Console.WriteLine("(4) Lista upp personer som har ett efternamn som börjar på en viss bokstav.\n(5) Lista upp personer som är födda i ett visst land\n");

            string input = Console.ReadLine();

            if (input == "1")
            {
                Console.WriteLine("Skriv in årtalet.");
                var choice = Console.ReadLine();
                var people = GetDataTable("SELECT Förnamn, Efternamn FROM Personer WHERE Född = @choice", Familjeträd, ("@choice", choice));
                if (people.Rows.Count == 0)
                {
                    Console.WriteLine($"Det finns inga personer födda {choice}.");
                }
                else if (people.Rows.Count >= 1)
                {
                    foreach (DataRow row in people.Rows)
                    {
                        Console.WriteLine($"{row["Förnamn"].ToString()} {row["Efternamn"].ToString()}");
                    }
                }
            }
            if (input == "2")
            {
                Console.WriteLine("Skriv in bokstaven. (Det går bra att skriva mer än en bokstav, ex. Lu för Luke och Lukas)");
                string charInput = Console.ReadLine();
                string choice    = $"{charInput}%";
                var    people    = GetDataTable("SELECT Förnamn, Efternamn FROM Personer WHERE Förnamn LIKE @choice", Familjeträd, ("@choice", choice));
                if (people.Rows.Count == 0)
                {
                    Console.WriteLine($"Det finns inga personer som börjar på {charInput}.");
                }
                else if (people.Rows.Count >= 1)
                {
                    foreach (DataRow row in people.Rows)
                    {
                        Console.WriteLine($"{row["Förnamn"].ToString()} {row["Efternamn"].ToString()}");
                    }
                }
            }
            if (input == "3")
            {
                Console.WriteLine("Skriv in staden.");
                var choice = Console.ReadLine();
                var people = GetDataTable("SELECT Förnamn, Efternamn FROM Personer WHERE Födelsestad = @choice", Familjeträd, ("@choice", choice));
                if (people.Rows.Count == 0)
                {
                    Console.WriteLine($"Det finns inga personer födda ifrån staden {choice}.");
                }
                else if (people.Rows.Count >= 1)
                {
                    foreach (DataRow row in people.Rows)
                    {
                        Console.WriteLine($"{row["Förnamn"].ToString()} {row["Efternamn"].ToString()}");
                    }
                }
            }
            if (input == "4")
            {
                Console.WriteLine("Skriv in bokstaven. (Det går bra att skriva mer än en bokstav, ex. Sm för Smith och Smithsson)");
                string charInput = Console.ReadLine();
                string choice    = $"{charInput}%";
                var    people    = GetDataTable("SELECT Förnamn, Efternamn FROM Personer WHERE Efternamn LIKE @choice", Familjeträd, ("@choice", choice));
                if (people.Rows.Count == 0)
                {
                    Console.WriteLine($"Det finns inga personer som börjar på {charInput}.");
                }
                else if (people.Rows.Count >= 1)
                {
                    foreach (DataRow row in people.Rows)
                    {
                        Console.WriteLine($"{row["Förnamn"].ToString()} {row["Efternamn"].ToString()}");
                    }
                }
            }
            if (input == "5")
            {
                Console.WriteLine("Skriv in landet.");
                string choice = Console.ReadLine();
                var    people = GetDataTable("SELECT Förnamn, Efternamn FROM Personer WHERE Födelseland LIKE @choice", Familjeträd, ("@choice", choice));
                if (people.Rows.Count == 0)
                {
                    Console.WriteLine($"Det finns inga personer som är födda efter {choice}.");
                }
                else if (people.Rows.Count >= 1)
                {
                    foreach (DataRow row in people.Rows)
                    {
                        Console.WriteLine($"{row["Förnamn"].ToString()} {row["Efternamn"].ToString()}");
                    }
                }
            }
        }