public Straat MaakStraat(int straatId)
        {
            Straat        straat      = null;
            SqlConnection connection  = getConnection();
            SqlConnection connection2 = getConnection();        //om meerdere readers tegelijk te kunnen uitvoeren!

            string queryStraat     = "Select * FROM dbo.straat WHERE id=@straatId";
            string querySegment    = "SELECT * FROM dbo.segment WHERE straatId=@straatId";
            string queryBeginknoop = "SELECT * FROM dbo.knoop WHERE id=@beginknoopId";
            string queryEindknoop  = "SELECT * FROM dbo.knoop WHERE id=@eindknoopId";
            string queryPunt       = "SELECT * FROM dbo.punt WHERE segmentId=@segmentId";

            using (SqlCommand command1 = connection.CreateCommand())
                using (SqlCommand command2 = connection.CreateCommand())
                    using (SqlCommand command3 = connection2.CreateCommand())
                        using (SqlCommand command4 = connection2.CreateCommand())
                            using (SqlCommand command5 = connection2.CreateCommand())
                            {
                                connection.Open();
                                connection2.Open();
                                SqlTransaction transaction = connection.BeginTransaction();
                                command1.Transaction = transaction;
                                command2.Transaction = transaction;
                                //
                                SqlTransaction transaction2 = connection2.BeginTransaction();
                                command3.Transaction = transaction2;
                                command4.Transaction = transaction2;
                                command5.Transaction = transaction2;
                                try
                                {
                                    //Straat maken
                                    command1.Parameters.Add(new SqlParameter("@straatId", SqlDbType.Int));

                                    command1.CommandText = queryStraat;
                                    command1.Parameters["@straatId"].Value = straatId;
                                    SqlDataReader dataReader = command1.ExecuteReader();
                                    dataReader.Read();
                                    string straatnaam = (string)dataReader["straatnaam"];
                                    string gemeente   = (string)dataReader["gemeente"];
                                    string provincie  = (string)dataReader["provincie"];
                                    int    graafId    = (int)dataReader["graafId"];
                                    float  lengte     = (float)dataReader["lengte"];
                                    dataReader.Close();

                                    //Segmenten
                                    List <Segment> segmenten = new List <Segment>();

                                    command2.Parameters.Add(new SqlParameter("@straatId", SqlDbType.Int));
                                    command2.CommandText = querySegment;
                                    command2.Parameters["@straatId"].Value = straatId;
                                    dataReader = command2.ExecuteReader();
                                    while (dataReader.Read())
                                    {
                                        int segmentId    = (int)dataReader["id"];
                                        int beginknoopId = (int)dataReader["beginknoop"];
                                        int eindknoopId  = (int)dataReader["eindknoop"];

                                        //beginknoop
                                        command3.Parameters.Add(new SqlParameter("@beginknoopId", SqlDbType.Int));
                                        command3.CommandText = queryBeginknoop;
                                        command3.Parameters["@beginknoopId"].Value = beginknoopId;
                                        SqlDataReader reader = command3.ExecuteReader();
                                        reader.Read();
                                        string bx             = (string)reader["x"];
                                        string by             = (string)reader["y"];
                                        Punt   beginknooppunt = new Punt(double.Parse(bx), double.Parse(by));
                                        Knoop  beginknoop     = new Knoop(beginknoopId, beginknooppunt);
                                        reader.Close();
                                        command3.Parameters.Clear();

                                        //eindknoop
                                        command4.Parameters.Add(new SqlParameter("@eindknoopId", SqlDbType.Int));
                                        command4.CommandText = queryEindknoop;
                                        command4.Parameters["@eindknoopId"].Value = eindknoopId;
                                        reader = command4.ExecuteReader();
                                        reader.Read();
                                        string ex            = (string)reader["x"];
                                        string ey            = (string)reader["y"];
                                        Punt   eindknooppunt = new Punt(double.Parse(ex), double.Parse(ey));
                                        Knoop  eindknoop     = new Knoop(eindknoopId, eindknooppunt);
                                        reader.Close();
                                        command4.Parameters.Clear();

                                        //punten
                                        List <Punt> punten = new List <Punt>();

                                        command5.Parameters.Add(new SqlParameter("@segmentId", SqlDbType.Int));
                                        command5.CommandText = queryPunt;
                                        command5.Parameters["@segmentId"].Value = segmentId;
                                        reader = command5.ExecuteReader();
                                        while (reader.Read())
                                        {
                                            Punt punt = new Punt(double.Parse((string)reader["x"]), double.Parse((string)reader["y"]));
                                            punten.Add(punt);
                                        }
                                        reader.Close();
                                        command5.Parameters.Clear();

                                        Segment segment = new Segment(segmentId, beginknoop, eindknoop, punten);
                                        segmenten.Add(segment);
                                    }
                                    dataReader.Close();

                                    Graaf graaf = new Graaf(segmenten, graafId);
                                    straat = new Straat(straatId, straatnaam, graaf, provincie, gemeente, lengte);

                                    return(straat);
                                }
                                catch (Exception ex)
                                {
                                    Console.WriteLine(ex);
                                }
                                finally
                                {
                                    connection.Close();
                                }
                            }
            return(straat);
        }
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");

            DataBevrager db = new DataBevrager("Data Source=DESKTOP-HT91N8R\\SQLEXPRESS;Initial Catalog=db_Wegennet;Integrated Security=True");

            Console.WriteLine("Wat wenst u te doen (Typ het nummer)?");
            Console.WriteLine("1. Lijst van straatID's van een gemeente opvragen");
            Console.WriteLine("2. Straatinfo opvragen via een straatID");
            Console.WriteLine("3. Straatinfo opvragen via straatnaam en gemeentenaam");
            Console.WriteLine("4. Alle straatnamen van een gemeente opvragen (alfabetische volgorde)");
            Console.WriteLine("5. Een overzichtsrapport voor een provincie");
            Console.WriteLine("6. Alle straatnamen grenzend aan een straat opvragen");

            int keuze = int.Parse(Console.ReadLine().Trim('.', ' '));

            switch (keuze)
            {
            case 1:
                Console.WriteLine("Van welke gemeente wenst u de straatID's op te vragen?");
                string     gemeente  = Console.ReadLine().ToLower();
                List <int> straatIDs = db.GeefStraatIDs(gemeente);
                foreach (int straatID in straatIDs)
                {
                    Console.WriteLine(straatID);
                }
                break;

            case 2:
                Console.WriteLine("Van welke straatID wenst u de straatinfo? (geef straatID) ");
                int    straatId = int.Parse(Console.ReadLine());
                Straat straat   = db.MaakStraat(straatId);
                straat.showStraat();
                break;

            case 3:
                Console.WriteLine("Geef de straatnaam:");
                string straatnaam = Console.ReadLine().ToLower();
                Console.WriteLine("Geef de gemeentenaam:");
                string gemeentenaam = Console.ReadLine().ToLower();
                Straat straat2      = db.MaakStraat(straatnaam, gemeentenaam);
                straat2.showStraat();
                break;

            case 4:
                Console.WriteLine("Geef de gemeentenaam:");
                string        gemeentenaam2 = Console.ReadLine();
                List <string> straatnamen   = db.GeefStraatnamenVanGemeente(gemeentenaam2);
                foreach (string straatnaam2 in straatnamen)
                {
                    Console.WriteLine(straatnaam2);
                }
                break;

            case 5:
                Console.WriteLine("Geef de provincie:");
                string provincie = Console.ReadLine();
                db.GeefProvincieoverzicht(provincie);
                break;

            case 6:
                Console.WriteLine("Geef een straatID: ");
                int           strId = int.Parse(Console.ReadLine());
                List <string> aangrenzendeStraten = db.GeefAangrenzendeStraten(strId);
                foreach (string straat3 in aangrenzendeStraten)
                {
                    Console.WriteLine(straat3);
                }
                break;
            }
        }