Операторы условия для значения данных одной строки в базе данных

0


Я использую С# для создания формы Windows.
Я пытаюсь установить оператор условия для определенного значения, которое извлекается из моей базы данных кнопкой onclick. Тип данных столбца - "целое число".

Ниже мой код:

 string checkquantity = "SELECT  'inventory_item'.'Item_Quantity_Available'FROM 'inventory_item' , 'patient', 'out_treatment'WHERE 'inventory_item'.'Item_ID' = 'out_treatment'.'Inventory_ID'AND 'patient'.'Patient_ID' = 'out_treatment'.'Patient_ID'AND 'out_treatment'.'Patient_ID'= '" + pid + "' ";
            MySqlCommand selectout = new MySqlCommand(checkquantity, connect);
            MySqlDataAdapter selectdata = new MySqlDataAdapter(checkquantity, connect);
            DataTable selecttable = new DataTable();
            selectdata.Fill(selecttable);
            DataSet ds = new DataSet();
            selectdata.Fill(selecttable);
            selectdata.Fill(ds);
            int i = ds.Tables[0].Rows.Count;
            if ( i <= 0)
            {
                MessageBox.Show("Out of Stock");
            }

Я новичок в С#.
Я не думаю, что int я = ds.Tables[0].Rows.Count; это правильный путь.
Буду признателен за любую оказанную помощь.

  • 0
    У вас есть 3 таблицы в вашем select, но нет объединений ... Вы не должны использовать DataTable / DataSet, если вы просто хотите получить результат запроса, используйте команду selectout.ExecuteScalar() которая вернет первый столбец Первый ряд.
  • 0
    хорошо .. я попробую это
Показать ещё 3 комментария
Теги:
winforms

1 ответ

0

Прежде всего, как сказал @Flydog57, вы не должны конкатенировать свой SQL-запрос. Лучший способ - использовать параметры, например:

string checkquantity = "SELECT  i.Item_Quantity_Available " +
                       "  FROM inventory_item i JOIN out_treatment t ON i.Item_Id = t.Inventory_ID " +
                       "                        JOIN patient p ON t.Patient_ID = p.PatiendID " +           
                       " WHERE t.Patient_ID = @Patiend_ID";
MySqlCommand selectout = new MySqlCommand(checkquantity, connect);
// set the parameter value
selectout.Parameters.AddWithValue("@Patiend_ID", patient_id_value);
MySqlDataReader rdr = cmd.ExecuteReader();          

if (rdr.Read())
{
    if ((int)rdr["Item_Quantity_Available"] == 0)

        MessageBox.Show("Out of Stock");
}

Во-вторых, вы можете использовать MySqlDataReader для проверки того, что Item_Quantity_Available равен 0, как в предыдущем примере. В противном случае, если вы просто хотите проверить, есть ли данные, условие может быть примерно таким:

if (!rdr.Read())
{
    MessageBox.Show("Out of Stock");
}

Третье улучшение - объединение таблиц с предложением join.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню