【问题标题】:Update value of a column c# winforms applicaiton更新列的值 c# winforms 应用程序
【发布时间】:2020-06-03 13:11:04
【问题描述】:

我正在尝试使用 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,它有一个值。所以我不明白如何解决这个错误。` 你能帮我么。我知道这是一个新手引起的错误,但我无法弄清楚。 /顺便说一句,我还是个大三学生/。从互联网上尝试了不同的东西和解决方案,但仍然无法找到解决方案。 你能给我一个关于我的问题的解决方案吗?

【问题讨论】:

    标签: c# sql sql-server winforms


    【解决方案1】:

    您需要在 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();
    }
    

    【讨论】:

      【解决方案2】:

      那是因为你没有为@datestring 传递任何参数,正如错误清楚地表明的那样。您还需要传递该参数,例如

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

      【讨论】:

        猜你喜欢
        • 2010-09-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-08-29
        • 1970-01-01
        • 2012-01-20
        • 1970-01-01
        相关资源
        最近更新 更多