如何使用数据库验证用户输入?

时间:2011-07-05 06:02:25

标签: c# winforms validation

我正在验证数据库的用户输入,检查文本框字段中的输入键是否在数据库中有类似的数据,如果有它会提示它,我在窗口形式C#

我尝试使用Web方法验证它,但现在我有一个问题,将其转移到form.class ....基本上我想检查名称是否存在于数据库中,如果它会这样做提示

public Boolean validateName(String txtName)
{
 SqlConnection conn = new SqlConnection("Data Source=.\\SQLEXPRESS;Initial 
                               Catalog=Staff;Integrated Security=True");
 SqlCommand dbCommand = new SqlCommand();
 dbCommand.CommandText = @"SELECT COUNT(*) FROM StaffDirectory WHERE StaffName='" 
                                           + txtName + "'";
 dbCommand.Connection = conn;
 conn.Open();
 int matchesCount = int.Parse(dbCommand.ExecuteScalar().ToString());

 conn.Close();
 return matchesCount != 0;
}

3 个答案:

答案 0 :(得分:0)

简单的答案是你不应该让DB处理这个问题。它应该有一个交易,如果它有效,那么一切都没问题,否则什么都不做。您应该在代码中处理所有输入值的解析,这样就不会强制DB超出需要的工作量。

这是一个link,可以帮助您开始交易

答案 1 :(得分:0)

验证应该在Form逻辑上完成。不要将其传输到数据库来处理。 L

在您的UI代码中遵循验证模型示例:

  protected void textBox1_Validating (object sender,
   System.ComponentModel.CancelEventArgs e)
{
   try
   {
      int x = Int32.Parse(textBox1.Text);
      errorProvider1.SetError(textBox1, "");
   }
   catch (Exception ex)
   {
      errorProvider1.SetError(textBox1, "Not an integer value.");
   }
}

答案 2 :(得分:0)

您应该使用准备好的查询。它会避免sql注入。您的代码不安全。 以下是MS site

中的示例