在删除C#和MS Access中的记录之前检查是否存在ID

时间:2013-12-08 21:07:44

标签: c# ms-access

我是新的C#和MS Access用户,我正在制作汽车保险计划。尝试删除用户时,会插入ID并正常执行删除过程。但是,如果输入了不存在的ID,程序仍会显示“已删除记录”。这是我的代码:

private void button1_Click(object sender, EventArgs e)
    {
        try
        {
            if (MessageBox.Show("Are you sure you want to delete?", "WARNING!", MessageBoxButtons.YesNo) == System.Windows.Forms.DialogResult.Yes)
            {
                con.Open();
                cmd.Connection = con;


                string q = "delete from Users where ID=" + numericUpDown1.Value.ToString();
                deletedata(q);
                cmd.ExecuteNonQuery();
                MessageBox.Show("Record Deleted");
                numericUpDown1.Value = 0;
                con.Close();
            }
            else
                Close();
        }
        catch (Exception ex)
        {
            con.Close();
            MessageBox.Show(ex.Message);

        }


    }


    private void deletedata(String q)
    {
        try
        {
            cmd.CommandText = q;
        }
        catch (Exception ex)
        {
            con.Close();
            MessageBox.Show(ex.Message.ToString());

        }

    }

2 个答案:

答案 0 :(得分:4)

问题:您正在显示Records Deleted消息,而不检查查询执行status

解决方案: ExecuteNonQuery()会在执行时返回int值来表示行total number updated/deleted/inserted,因此您可以显示success }仅当返回值为greater than 0时才显示消息,否则显示failure/error消息。

试试这个:

       int rowsDeleted=cmd.ExecuteNonQuery();
       if(rowsDeleted>0)
            MessageBox.Show("Record Deleted");
       else
            MessageBox.Show("No Record to Delete");

答案 1 :(得分:0)

如果您的数据库中有与其他表有关的表,我建议您不要删除,但添加一个名为exemple“deleted”的字段,以便跟踪已删除的文件。

如果删除字段与其他表有关系,则删除字段会导致数据库不稳定。