示例#1
0
        public async Task <FlightPlan> GetFlightPlan(string id)
        {
            // Opening the connection
            using SQLiteConnection con = new SQLiteConnection(connectionString);
            await con.OpenAsync();

            // Get the flightplan with that id from DB
            using SQLiteCommand command = new SQLiteCommand(
                      "SELECT * FROM FlightPlans WHERE id = '" + id + "'", con);
            try
            {
                // Get the object
                using SQLiteDataReader rdr = (SQLiteDataReader) await command.ExecuteReaderAsync();

                await rdr.ReadAsync();

                string tryid = rdr.GetString(1);
                int    pass  = rdr.GetInt32(2);
                string comp  = rdr.GetString(3);
                string init  = rdr.GetString(4);
                string segs  = rdr.GetString(5);
                // Create a new one
                FlightPlanDBRep fpdb = new FlightPlanDBRep(tryid, pass, comp, init, segs);
                // Return it
                return(new FlightPlan(fpdb));
            }
            // Failed
            catch (Exception)
            {
                return(null);
            }
        }
示例#2
0
        public async IAsyncEnumerable <FlightPlan> GetAllFlightPlans()
        {
            // Opening the connection
            using SQLiteConnection con = new SQLiteConnection(connectionString);
            await con.OpenAsync();

            // Get all from the DB
            using SQLiteCommand command = new SQLiteCommand("SELECT * FROM FlightPlans", con);
            using SQLiteDataReader rdr  = (SQLiteDataReader) await command.ExecuteReaderAsync();

            // Get and return the flightplans one by one
            while (await rdr.ReadAsync())
            {
                // Get the object by his fields
                string tryid = rdr.GetString(1);
                int    pass  = rdr.GetInt32(2);
                string comp  = rdr.GetString(3);
                string init  = rdr.GetString(4);
                string segs  = rdr.GetString(5);

                // Create it
                FlightPlanDBRep fpdb = new FlightPlanDBRep(tryid, pass, comp, init, segs);
                FlightPlan      fp   = new FlightPlan(fpdb);

                // Return it
                yield return(fp);
            }
            yield break;
        }
示例#3
0
        public async Task AddFlightPlan(FlightPlan flightPlan)
        {
            // Opening the connection
            using SQLiteConnection con = new SQLiteConnection(connectionString);
            await con.OpenAsync();

            // The query to insert
            using var command = new SQLiteCommand(
                      "INSERT into FlightPlans (id, Passengers, Company, InitLocation, Segments) " +
                      "VALUES (@Id, @Passengers, @Company, @InitLocation, @Segments)", con);
            FlightPlanDBRep fpdb = new FlightPlanDBRep(flightPlan);

            // Insert the parameters with value
            command.Parameters.AddWithValue("@Id", fpdb.GetID());
            command.Parameters.AddWithValue("@Passengers", fpdb.Passengers);
            command.Parameters.AddWithValue("@Company", fpdb.Company);
            command.Parameters.AddWithValue("@InitLocation", fpdb.InitLocation);
            command.Parameters.AddWithValue("@Segments", fpdb.Segments);
            try
            {
                // Write to DB
                var res = await command.ExecuteNonQueryAsync();

                // Failed
                if (res == 0)
                {
                    throw new ArgumentException("Can't post flight");
                }
            }
            // The id is already there
            catch (Exception e)
            {
                //throw new ArgumentException("Flight id " + flightPlan.GetID()
                //    + "already found in data base.");
                throw e;
            }
        }