【问题标题】:How to validate user input with database?如何使用数据库验证用户输入?
【发布时间】:2011-07-05 06:02:25
【问题描述】:

我正在用数据库验证用户输入,检查文本框字段中的输入键是否在数据库中有类似的数据,如果有它会提示它,我在窗口窗体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 结果检查 null 等等......
  • @Abdul 是我将如何使用将这个 web 方法更改为一个函数或方法,一旦我点击数据库,我就可以检查是否有类似的数据库
  • @Davide Piras...我不太确定,我只在使用 web 方法并调用 web 方法之前尝试过......在直接调用类检查之前我从来没有这样做过跨度>

标签: c# winforms validation


【解决方案1】:

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

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

【讨论】:

  • 他提供的代码并未描述 DB 正在处理某事。
  • @Muqtadir 我同意这一点,但文字暗示他试图通过使用数据库来验证数据。
  • @Marthin...那怎么办?应该用什么?或者我该怎么办?
  • @cutexxxpies 如果我对您的理解正确,您正在尝试 a) 检查名称是否可以有效插入您的数据库或 b) 您正在检查名称是否已经在数据库中。如果我对此正确,那么请更详细地说明您要完成的工作,a 或 b。
  • @Marthin ...我在做 B)检查名称是否存在,它将执行一个 else 语句,即插入...我已经完成了...但问题是我不'不知道如何检查名称是否存在
【解决方案2】:

验证应该在表单逻辑中完成。不要把它转移到数据库来处理。 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.");
   }
}

【讨论】:

  • 你做的代码检查数据库是否有数据?如果它有它应该提示它......并且应该在按钮上完成检查
【解决方案3】:

您可能应该使用准备好的查询。它将避免sql注入。您的代码不安全。 这是来自MS site的示例

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多