数据库中单行数据值的条件语句

时间:2018-09-12 23:17:55

标签: c# mysql sql winforms


我正在使用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;是不正确的方法。
非常感谢您的帮助。

1 个答案:

答案 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子句连接表。