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

Odpowiedz Nowy wątek
2018-02-18 13:00
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
edytowany 1x, ostatnio: JaCube, 2018-02-18 13:01

Pozostało 580 znaków

2018-02-18 13:19
0

a tak próbowałeś ?

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

Lubię miodek :)

Pozostało 580 znaków

2018-02-18 13:36

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.


Java to taki C# tyle że z gorszą składnią.
edytowany 1x, ostatnio: neves, 2018-02-18 13:38

Pozostało 580 znaków

2018-02-18 13:47
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.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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