Komenda MySQL z parametrami nie wykonuje się i nie wyrzuca błędu

0

Witam, mój problem polega na tym, że komenda MySQL wykonuje się prawidłowo jeśli wstawię do niej bezpośrednio zmienne przekazywane do funkcji, natomiast przez parametry efektów nie widać, to znaczy pobiera tabelę, ale nie posortowaną jak należy i żaden wyjątek nie daje o sobie znać. Oczywiście ze względów bezpieczeństwa nie zostawię tego tak jak jest. Co może być przyczyną? W podobnej funkcji w której wykonuję zapytanie z aktualizacją bazy też używam parametrów i wszystko gra.

 #region Pobranie tabeli produktów
        public List<DBProductsModel> GetProducts(string orderBy, string orderHow)
        {

            List<DBProductsModel> products_list = new List<DBProductsModel>();

            try
            {
                using (connection)
                {

                    if (connection.State == ConnectionState.Closed)
                        connection.Open();

                   // MySqlCommand sqlCmd = new MySqlCommand("SELECT * FROM products ORDER BY @orderBy @orderHow", connection);
                    MySqlCommand sqlCmd = new MySqlCommand("SELECT * FROM products ORDER BY "+orderBy+" "+orderHow, connection);
                    sqlCmd.Parameters.AddWithValue("@orderBy", orderBy);
                    sqlCmd.Parameters.AddWithValue("@orderHow", orderHow);

                    MySqlDataReader reader = sqlCmd.ExecuteReader();

                    if (reader.HasRows)
                    {    
                        while (reader.Read())
                        {
                            products_list.Add(new DBProductsModel {
                                product_id=reader.GetInt32(0),
                                product_name=reader.GetString(1),
                                product_quantity=reader.GetInt32(2),
                                product_price=reader.GetDecimal(3)                               
                                });
                           
                        }
                        return products_list;
                        
                    }
                    else
                    {
                        return null;
                    }
                }


            }
            catch (MySqlException Ex)
            {
                MessageBox.Show(Ex.Message);
                return null;
            }
            finally
            {
                
                connection.Close();
               
            }
        }
        #endregion
0

a tak próbowałeś ?

MySqlCommand sqlCmd = new MySqlCommand("SELECT * FROM products ORDER BY @orderBy, @orderHow", connection);
2

Za pomocą parametrów przesyła się wartości jakie mogą się pojawić w danej kolumnie, nazwa kolumny i sposób sortowania nie są wartościami tylko bytami tabeli/języka, ergo tak tego nie zrobisz.

0
Kubuś Puchatek napisał(a):

a tak próbowałeś ?

MySqlCommand sqlCmd = new MySqlCommand("SELECT * FROM products ORDER BY @orderBy, @orderHow", connection);

Niestety tak też nie działa.

neves napisał(a):

Za pomocą parametrów przesyła się wartości jakie mogą się pojawić w danej kolumnie, nazwa kolumny i sposób sortowania nie są wartościami tylko bytami tabeli/języka, ergo tak tego nie zrobisz.

Rozumiem, czyli muszę zastosować jakąś funkcję która będzie generowała gotowego stringa. Dzięki za wyjaśnienie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1