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