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

C# 如何使用数据库验证用户输入?,c#,winforms,validation,C#,Winforms,Validation,我正在用数据库验证用户输入,检查文本框字段中的输入键是否在数据库中有类似的数据,如果有,它将提示它,我在窗口窗体C中执行# 在使用web方法验证它之前,我尝试过,但现在我在将它传输到form.class时遇到了一个问题……基本上,我想检查它的名称是否存在于数据库中,如果它存在,它将提示 public Boolean validateName(String txtName) { SqlConnection conn = new SqlConnection("Data Source=.\\SQLE

我正在用数据库验证用户输入,检查文本框字段中的输入键是否在数据库中有类似的数据,如果有,它将提示它,我在窗口窗体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;
}

简单的回答是,您不应该让DB处理这个问题。它应该有一个事务,如果它工作,那么一切都是好的,否则它什么也不做。您对输入值的所有解析都应该在代码中处理,这样您就不会强迫DB超出需要


下面是一个帮助您从事务开始获取信息的示例

验证应该在表单逻辑中完成。不要将其传输到数据库进行处理。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.");
   }
}

您可能应该使用准备好的查询。它将避免sql注入。你的代码不安全。
下面是一个来自

的示例,您应该真正了解如何处理数据库调用和连接,如何解析数据库结果检查空值等等…@Abdul是我将如何使用将此web方法更改为函数的方法,或者在单击databse@DavidePiras…我不是很确定,我只是在使用web方法和调用web方法之前尝试过……在调用直接类他提供的代码没有描述DB正在处理某些事情。@Muqtadir我同意,但文本暗示他试图使用DB验证数据。@Marthin…那怎么办?你应该用什么?或者我该怎么做?@cutexxxpies如果我理解正确,您可能正在尝试a)检查名称是否可以插入数据库,或者b)您正在检查名称是否已经在数据库中。如果我是对的,那么请更详细地告诉我你想做什么,a或b.@Marthin…我在做b)检查名称是否存在它将做一个else语句,即插入…我已经做了…但问题是我不知道如何检查名称是否存在你做的代码是否检查数据库是否有数据?如果有,它应该提示它…并且应该在按钮处进行检查,是吗