我正在使用C#创建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");
}
我是C#的新手。
我认为int i = ds.Tables[0].Rows.Count;
是不正确的方法。
非常感谢您的帮助。
答案 0 :(得分: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子句连接表。