在项目不可用时添加新数据

本文关键字:新数据 数据 添加 项目 | 更新日期: 2023-09-27 18:01:10

我对编程很陌生,当数据库中不存在项目代码时,我很难思考如何添加新项目。在我添加else语句之前,它似乎运行得很顺利。这是我的代码:

private void btnAdd_Click(object sender, EventArgs e)
    {
        try
        {
            con.Open();
            OleDbCommand command = new OleDbCommand(@"Select * from TblInventory where ItemCode=itemcode");
            command.Connection = con;
            command.Parameters.AddWithValue("@itemcode", txtItem.Text);
            OleDbDataReader reader = command.ExecuteReader();
            if (reader.HasRows == true)
            {
                OleDbCommand cmd = new OleDbCommand(@"Update TblInventory set Quantity = Quantity + @Quantity 
WHERE ItemCode = @itemcode");
                cmd.Connection = con;                   
                cmd.Parameters.AddWithValue("@Quantity",Convert.ToInt32(txtQuantity.Text));
                cmd.Parameters.AddWithValue("@itemcode", txtItem.Text);
                cmd.ExecuteNonQuery();
                MessageBox.Show("Data Saved !");
            }
            else
            {
                OleDbCommand cmdInsert = new OleDbCommand(@"insert into TblInventory (ItemCode,ProductName,Quantity)
values ('" + txtItem.Text + "','" + txtProduct.Text + "','" + txtQuantity.Text + "')");
                cmdInsert.Connection = con;
                cmdInsert.ExecuteNonQuery();
                MessageBox.Show("New Data Added");
            }
            con.Close();
        }
        catch (Exception ex)
        {
            MessageBox.Show("Error  " + ex);
        }
    }

在项目不可用时添加新数据

在数据库中查找现有记录的最佳方法之一是计算给定记录条件的数量。

OleDbCommand command = new OleDbCommand(@"Select COUNT(ItemCode) from
                                          TblInventory where ItemCode= @itemcode");

然后使用ExecuteScalar()而不是ExecuteReader()

Int32 count = (int32) command.ExecuteScalar();

ExecuteScalar()返回查询结果第一行的第一列,即itemCode的计数。您可以阅读此链接了解更多信息。

然后你可以做简单的条件逻辑。

if (count > 0) // means that itemCode has 1 or more record count found in the db.
{
     // Do the update logic here..
}
else
{
     // Do the insert logic here...
}

我已经找到了答案。来自:

OleDbCommand command = new OleDbCommand(@"Select * from TblInventory where ItemCode=itemcode");   

到此:

 OleDbCommand command = new OleDbCommand(@"Select * from TblInventory where ItemCode='" + txtItem.Text + "'");