Как я могу сделать несколько вставок в базе данных внутри foreach () - PullRequest
0 голосов
/ 25 июня 2019

У меня есть этот алгоритм метода записи, который связывается с моей базой данных.В основном я пытаюсь вставить в мою базу данных некоторые атрибуты, которые хранятся в списке.Пример: предполагая, что в моем списке 6 элементов, а каждый элемент имеет 3 атрибута, я хочу отправить 3 атрибута каждого элемента в базу данных.С помощью этого алгоритма я отправляю только 3 атрибута последнего элемента.

[HttpPost]
    [Route("cadastrar")]
    public HttpResponseMessage Post(Codec codec)
    {
        try
        {
            bool resultado = false;

            if (codec == null) throw new ArgumentNullException("codec");

            using (SqlConnection connection = new SqlConnection(this.ConnectionString))
            {
                AvlDataPacket objeto = Controller.parssingAvlData(codec.Pacote);
                connection.Open();

                using(SqlCommand command = new SqlCommand())
                {
                    command.Connection = connection;
                    foreach (var element in objeto.avlDataList)
                    {
                        codec.Latitude = element.gpsElement.Latitude;
                        codec.Longitude = element.gpsElement.Longitude;
                        codec.Altitude = element.gpsElement.Altitude;
                        codec.Angle = element.gpsElement.Angle;
                        codec.Satellites = element.gpsElement.Satellites;
                        codec.Speed = element.gpsElement.Speed;
                        codec.Ignition = element.ioElement.acharIoElement();

                        command.Parameters.Clear();
                        command.CommandText = "insert into tabela (latitude, longitude, altitude, angle, satellites, speed, ignition) " +
                            "values (@latitude, @longitude, @altitude, @angle, @satellites, @speed, @ignition)";

                        command.Parameters.AddWithValue("latitude", codec.Latitude);
                        command.Parameters.AddWithValue("longitude", codec.Longitude);
                        command.Parameters.AddWithValue("altitude", codec.Altitude);
                        command.Parameters.AddWithValue("angle", codec.Angle);
                        command.Parameters.AddWithValue("satellites", codec.Satellites);
                        command.Parameters.AddWithValue("speed", codec.Speed);
                        command.Parameters.AddWithValue("ignition", codec.Ignition);
                    }

                    int i = command.ExecuteNonQuery();
                    resultado = i > 0;
                }
                connection.Close();
            }
            return Request.CreateResponse(HttpStatusCode.OK, resultado);
        }
        catch (Exception ex)
        {
            return Request.CreateResponse(HttpStatusCode.BadRequest, ex.Message);
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...