条件语句

v440hwme  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(383)

我正在使用c#创建一个windows窗体。
我试图为一个特定的值设置一个条件语句,这个值是通过单击一个按钮从我的数据库中检索到的。列的数据类型为“integer”。
下面是我的代码:

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 i = ds.Tables[0].Rows.Count; 是正确的方法。
非常感谢您的帮助。

jjjwad0x

jjjwad0x1#

首先,就像@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\u quantity\u available是否等于0,如前一个示例中所示。否则,如果您只想验证是否存在数据,则条件可能如下所示:

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

第三个改进是用join子句连接表。

相关问题