Я использую С# для создания формы 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;
это правильный путь.
Буду признателен за любую оказанную помощь.
Прежде всего, как сказал @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.
selectout.ExecuteScalar()
которая вернет первый столбец Первый ряд.