C# 如何验证从asp.net插入SQL Server的数据

C# 如何验证从asp.net插入SQL Server的数据,c#,sql,asp.net,sql-server,sql-server-2012,C#,Sql,Asp.net,Sql Server,Sql Server 2012,我有一个web表单已经连接到SQL Server。我可以插入数据,但我不知道如何进行验证,以便在表已经具有相同信息的情况下不插入数据 这一过程如何进行 using (SqlConnection con = new SqlConnection("Data Source=hans-pc;Initial Catalog=CntExp;Integrated Security=True")) { SqlCommand cmd = new SqlCommand("INSERT INTO PreExp

我有一个web表单已经连接到SQL Server。我可以插入数据,但我不知道如何进行验证,以便在表已经具有相同信息的情况下不插入数据

这一过程如何进行

using (SqlConnection con = new SqlConnection("Data Source=hans-pc;Initial Catalog=CntExp;Integrated Security=True"))
{
    SqlCommand cmd = new SqlCommand("INSERT INTO PreExp1 (Expe, Usuario) values (@Expe, @Usuario)", con);
    cmd.Parameters.AddWithValue("@Expe", TextBox1.Text);
    cmd.Parameters.AddWithValue("@Usuario", TextBox2.Text);
    //cmd.Parameters.AddWithValue("@Fecha", Datenow());

    con.Open();

    int insertar = cmd.ExecuteNonQuery();

    Response.Write("Inserted" + insertar.ToString());
}

您正在使用输入参数。像这样的台词:

cmd.Parameters.AddWithValue("@Expe", TextBox1.Text);
它们被视为输入参数。验证数据的一种方法是使用输出参数。比如:

SqlParameter outParam = cmd.Parameters.Add("@MyParam", sqlDbType.Uniqueidentifier);
outParam.Direction = ParameterDirection.Output;
将其传递给确定记录是否存在的存储过程,并将布尔值“True”或“False”传递回C#代码。
然后,您可以检查outParam的值,并确定是否要继续处理代码。

除了在数据库中进行正确的完整性检查外,还可以应用WHERE not EXISTS子查询

INSERT INTO PreExp1 (Expe, Usuario) 
VALUES (@Expe, @Usuario)
WHERE NOT EXISTS (SELECT * FROM PreExp1
                    WHERE Expe = @Expe
                    AND Usuario = @Usuario)

尝试插入,点击唯一索引,处理失败。此外,您应该在完成连接后显式关闭连接。欢迎使用StackOverflow!你的问题有点宽泛,因为有很多不同的方法来实现这一点。您可以通过从代码(在事务中)查询数据库或在数据库中使用触发器来检查数据是否存在。因此,它更有可能帮助您解决特定的编码问题。因此,你应该更具体地说明“相同信息”的含义。语义可能有助于决定是在代码中验证还是在db级别验证。@OmarLopez如果您的表构建正确,引用完整性正确,则insert应该抛出一个异常,您可以适当地捕获和处理该异常。