C#SQL更新命令文本和参数

C#SQL更新命令文本和参数,c#,sql,sql-server,C#,Sql,Sql Server,我创建了一个简单的SQL数据库,它有一个表,tblcustomerformation,和三列: 名字 姓 还有电子邮件 我试图更新它,但是当我运行下面列出的代码时,程序什么也不做 它不会崩溃,也不会给我错误,只是什么都不做 我相当肯定我的UPDATE语句是正确的。我不知道为什么这在这一点上不起作用 using (SqlConnection Connection = new SqlConnection(@"Data Source=EWOODWARD-PC\SQL2012; Initial Ca

我创建了一个简单的SQL数据库,它有一个表,
tblcustomerformation
,和三列:

  • 名字
  • 还有电子邮件
我试图更新它,但是当我运行下面列出的代码时,程序什么也不做

它不会崩溃,也不会给我错误,只是什么都不做

我相当肯定我的
UPDATE
语句是正确的。我不知道为什么这在这一点上不起作用

using (SqlConnection Connection = new SqlConnection(@"Data Source=EWOODWARD-PC\SQL2012; Initial Catalog=CustomerGUI; Integrated Security=True"))
{
    using (SqlCommand cmd = Connection.CreateCommand())
    {

        cmd.CommandText = "UPDATE tblCustomerInformation SET LastName = @ln, Email = @em WHERE (FirstName = @fn)";

        //cmd.Parameters.Add("@ln", SqlDbType.NVarChar);
        //cmd.Parameters["@ln"].Value = txtLastName.Text;

        //cmd.Parameters.Add("@em", SqlDbType.NVarChar);
        //cmd.Parameters["@em"].Value = txtEmail.Text;

        //cmd.Parameters.Add("@fn", SqlDbType.NVarChar);
        //cmd.Parameters["@fn"].Value = txtFirstName.Text;


        cmd.Parameters.AddWithValue("@ln", txtLastName.Text);
        cmd.Parameters.AddWithValue("@fn", txtFirstName.Text);
        cmd.Parameters.AddWithValue("@em", txtEmail.Text);

        Connection.Open();

        cmd.ExecuteNonQuery();
    }
}

用这个。
cmd.Parameters…
代码的排列不应混乱。根据您的查询中的安排来确定

using (SqlConnection Connection = new SqlConnection(@"Data Source=EWOODWARD-PC\SQL2012; Initial Catalog=CustomerGUI; Integrated Security=True"))
{
    using (SqlCommand cmd = Connection.CreateCommand())
    {

        cmd.CommandText = "UPDATE tblCustomerInformation SET LastName = @ln, Email = @em WHERE FirstName = @fn";

        cmd.Parameters.AddWithValue("@ln", txtLastName.Text);
        cmd.Parameters.AddWithValue("@em", txtEmail.Text);
        cmd.Parameters.AddWithValue("@fn", txtFirstName.Text);

        Connection.Open();

        cmd.ExecuteNonQuery();
    }
}

您曾经遇到过此类错误。

请使用此选项。
cmd.Parameters…
代码的排列不应混乱。根据您的查询中的安排来确定

using (SqlConnection Connection = new SqlConnection(@"Data Source=EWOODWARD-PC\SQL2012; Initial Catalog=CustomerGUI; Integrated Security=True"))
{
    using (SqlCommand cmd = Connection.CreateCommand())
    {

        cmd.CommandText = "UPDATE tblCustomerInformation SET LastName = @ln, Email = @em WHERE FirstName = @fn";

        cmd.Parameters.AddWithValue("@ln", txtLastName.Text);
        cmd.Parameters.AddWithValue("@em", txtEmail.Text);
        cmd.Parameters.AddWithValue("@fn", txtFirstName.Text);

        Connection.Open();

        cmd.ExecuteNonQuery();
    }
}

您曾经遇到过此类错误。

FirstName=@fn如果您手动运行它,是否满意?作为最后的手段,捕获SQL调用的跟踪。运行此操作时,调用堆栈中是否有异常处理程序?您确定没有错误,只是被吞没了吗?您在文本框中输入了什么值,以及您试图更新的数据库中的现有行是什么样子的?请尝试将update语句作为select,其中LastName=@ln,并查看它是否返回任何值。此代码看起来正常,您没有得到更新的最可能的原因是您没有提供FirstName的记录FirstName=@fn如果您手动运行它是否满意?作为最后的手段,捕获SQL调用的跟踪。运行此操作时,调用堆栈中是否有异常处理程序?您确定没有错误,只是被吞没了吗?您在文本框中输入了什么值,以及您试图更新的数据库中的现有行是什么样子的?请尝试将update语句作为select,其中LastName=@ln,并查看它是否返回任何值。此代码看起来正常,你没有得到更新的最可能的原因是,当我第一次听到这样的消息时,你没有提供名字的记录。你确定你的问题在重新安排后得到了解决吗?我从来没有听说过,这对我来说毫无意义。在dotnet中使用参数的一大优势是,我们最终能够通过名称来处理它们。许多其他语言依赖于参数的顺序。我第一次听到这样的话。你确定你的问题在重新安排后得到了解决吗?我从来没有听说过,这对我来说毫无意义。在dotnet中使用参数的一大优势是,我们最终能够通过名称来处理它们。许多其他语言依赖于参数的顺序。