更新列c#winforms应用程序的值

更新列c#winforms应用程序的值,c#,sql,sql-server,winforms,C#,Sql,Sql Server,Winforms,我试图用where子句更新列值,但它触发了一个错误 必须声明标量变量“@datestring” 我在应用程序中遇到的问题是: private void button2_Click(object sender, EventArgs e) { string value = ""; string connetionString = "Data Source=LENOVO-PC\\CDVI_CENTAUR;Integrated Securi

我试图用where子句更新列值,但它触发了一个错误

必须声明标量变量“@datestring”

我在应用程序中遇到的问题是:

private void button2_Click(object sender, EventArgs e)
        {
            string value = "";
            string connetionString = "Data Source=LENOVO-PC\\CDVI_CENTAUR;Integrated Security=True";
            string sql = null;

            value = listBox1.GetItemText(listBox1.SelectedItem);
            var datestring = dateTimePicker1.Value.ToString("dd/MM/yyyy", System.Globalization.CultureInfo.InvariantCulture);


            var FirstName = value.Split(' ')[0];
            var LastName = value.Split(' ')[1];
            using (System.Data.SqlClient.SqlConnection cnn = new System.Data.SqlClient.SqlConnection(connetionString))
            {
                try
                {
                    cnn.Open();
                    using (System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand("UPDATE [Centaur3Main].[dbo].[Users]  SET [UDText12b] = @datestring WHERE FirstName = @FirstName and LastName = @LastName ", cnn))
                    {
                        // Create and set the parameters values 
                        cmd.Parameters.Add("@FirstName", SqlDbType.NVarChar).Value = FirstName;
                        cmd.Parameters.Add("@LastName", SqlDbType.NVarChar).Value = LastName;


                        cmd.ExecuteNonQuery();

                    }
                }

            }
datestring的值来自datetimepicker,它有一个值。因此我不知道如何修复此错误` 你能帮帮我吗。我知道这是一个新手造成的错误,但我无法解决。/顺便说一句,我还是个大三学生。/从互联网上尝试了不同的事情和解决方案,但仍然无法找到解决方法。
您能为我的问题提供一个解决方案吗。

这是因为您没有像错误明确指出的那样为
@datestring
传递任何参数。您需要像

cmd.Parameters.Add("@datestring", SqlDbType.DateTime).Value = datestring;

您需要在SQL命令中再添加一个参数。此参数为@datestring。请尝试以下操作:

using (System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand("UPDATE [Centaur3Main].[dbo].[Users]  SET [UDText12b] = @datestring WHERE FirstName = @FirstName and LastName = @LastName ", cnn))
{
  // Create and set the parameters values 
  cmd.Parameters.Add("@FirstName", SqlDbType.NVarChar).Value = FirstName;
  cmd.Parameters.Add("@LastName", SqlDbType.NVarChar).Value = LastName;
  cmd.Parameters.Add("@datestring",SqlDbType.DateTime).Value = dateTimePicker1.Value;
  cmd.ExecuteNonQuery();
}