C# 获取错误“;靠近';的语法不正确'&引用;
我遇到这个错误已经有一段时间了,但仍然无法解决它。我正在尝试更新数据库中的数据,只需在windows窗体中按下一个按钮 我正在使用SQLServer2011C# 获取错误“;靠近';的语法不正确'&引用;,c#,sql-server,syntax-error,C#,Sql Server,Syntax Error,我遇到这个错误已经有一段时间了,但仍然无法解决它。我正在尝试更新数据库中的数据,只需在windows窗体中按下一个按钮 我正在使用SQLServer2011 private void btnEdit_Click_1(object sender, EventArgs e) { MainMenu mainmenu = new MainMenu(); SqlCommand cmd = new SqlCommand("Update PresentationSpec SET Pres_na
private void btnEdit_Click_1(object sender, EventArgs e)
{
MainMenu mainmenu = new MainMenu();
SqlCommand cmd = new SqlCommand("Update PresentationSpec SET Pres_name = @Pres_name, Prestor_name = @Prestor_name, Pres_Summary = @Pres_Summary, Est_Length = @Est_Length, Date_Presented = @Date_Presented WHERE Id=" + mainmenu.tbxSelected);
cmd.Connection=connection;
connection.Open();
cmd.Parameters.AddWithValue("@Pres_name", tbxpresName.Text);
cmd.Parameters.AddWithValue("@Prestor_name", tbxprstorName.Text);
cmd.Parameters.AddWithValue("@Pres_Summary", rtbSummary.Text);
cmd.Parameters.AddWithValue("@Est_Length", tbxLength.Text);
cmd.Parameters.AddWithValue("@Date_Presented", tbxDate.Text);
cmd.ExecuteNonQuery();
this.Close();
Form2 editscreen = new Form2();
Refresh();
}
如果有人知道出了什么问题,请告诉我。您正在添加
mainmenu.tbxSelected
鉴于我怀疑你的意图是
mainmenu.tbxSelected.Text
前者可能会在WHERE子句中产生一个完全限定的typename,其中包含逗号
另一方面,您应该知道,以这种方式构造SQL可能会导致SQL注入攻击。如果这是一个问题,您最好考虑使用存储过程或ORM工具(如实体框架)。具体的texbox值是什么?没有SQL Server 2011-我们有2000、2005、2008、2008、2012、2014、,2016年和2017年-到底是哪一个?可能错误的是
主菜单的内容。tbxSelected
,我建议您检查一下。为什么您在集合
部分中使用参数作为值,而不是WHERE
子句??在那里也使用一个参数!这将解决您的问题第一次猜测:列Est\u Length
和Date\u呈现的sql类型是什么?您提供的参数是string
,但我猜类型应该是int
和DateTime
。因此,您需要将tbx.Length.Text
解析为int
并将tbxDate.Text
解析为DateTime
,否则AddWithValue
将告诉SQL这些是nvarchar
或其他东西,这可能会导致错误。谢谢,这很有帮助!