更新列c#winforms应用程序的值
我试图用where子句更新列值,但它触发了一个错误 必须声明标量变量“@datestring” 我在应用程序中遇到的问题是:更新列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
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();
}