在C#中存储到SQLite DB之前的表单验证

时间:2014-04-24 15:53:57

标签: c# sqlite validation

我有一个保存按钮。当用户点击它时。表单中的数据输入将在发送到数据库之前进行验证。我怎样才能实现它? 这是我的保存按钮的代码。

private void save_Click(object sender, EventArgs e)
{
    try
    {
        int civil_caseI = int.Parse(civil_case.Text);
    }
    catch (Exception cc)
    {
        MessageBox.Show("Enter Number Only on CIVIL CASE");
    }
    string areaI = area.Text;
    if (areaI.Length <= 0)
    {
        MessageBox.Show("Area Field must not be Empty");
    }
    string addressI = address.Text;
    if (addressI.Length <= 0)
    {
        MessageBox.Show("Address Field must not be Empty");
    }
    // HERE WILL BE THE QUERY TO INSERT THE DATA AFTER THE FORM IS VALIDATED.
}

1 个答案:

答案 0 :(得分:0)

如果验证中存在错误,则不会从您的方法返回。如果规则验证中存在异常/失败,则从您的方法早期 return 。您只需在显示错误消息后添加return;语句即可。

更好的方法是使用int.TryParse来解析int值,而不是try-catch。记住异常是昂贵的。您也可以使用string.IsNullOrWhiteSpace代替addressI.Length <= 0,它会将空格视为无效值(如果您使用.Net framework 4.0或更高版本,否则请使用`string.IsNullOrEmpty)

private void save_Click(object sender, EventArgs e)
{
    int civil_caseI;
    if (!int.TryParse(civil_case.Text, out civil_caseI))
    {
        MessageBox.Show("Enter Number Only on CIVIL CASE");
        return; //add that - early return
    }
    string areaI = area.Text;
    if (string.IsNullOrEmpty(areaI.Trim()))
    {
        MessageBox.Show("Area Field must not be Empty");
        return;
    }
    string addressI = address.Text;
    if (string.IsNullOrEmpty(addressI.Trim())) //or addressI.Trim().Length <= 0
    {
        MessageBox.Show("Address Field must not be Empty");
        return;
    }
    //HERE WILL BE THE QUERY TO INSERT THE DATA AFTER THE FORM IS VALIDATED.
}

您还可以在返回bool的单独方法中提取验证的逻辑,然后调用该方法进行验证。