';附近的语法不正确';.SQL Server和c#

本文关键字:Server SQL 语法 不正确 | 更新日期: 2023-09-27 18:29:30

我得到一个异常:

","附近的语法不正确。

在以下查询中:请提供帮助。

我试过很多方法,但都不管用。即使我试图插入一个值,我仍然会得到这个异常。

cmd = new SqlCommand("insert into purchaseOrder_master(sup_id,po_date,required_date,tot_amt,uid,potime) values("+supid.Text +",'"+podate.Value.Date+"','"+reqdate.Value.Date+"',"+pocost.Text +","+uid.Text +",'"+potime.Value.TimeOfDay  +"')", con);

';附近的语法不正确';.SQL Server和c#

我们应该多久重复一次使用参数化查询?!

using (SqlCommand cmd = new SqlCommand("insert into table (column) values (@param)", conn))
{
  cmd.Parameters.AddWithValue("@param", value);
  cmd.ExecuteNonQuery();
}

你的代码问题是:

  1. 对SQL注入开放
  2. DateTime值将无法正确处理(可能是现在的问题)
  3. 字符串必须正确处理(引号)
cmd = new SqlCommand("insert into PurchaseOrder_master(sup_id) values(@val)", con);    
cmd.parameters.AddWithValue("@val", supid.Text );

请同时检查日期的数据类型。你似乎只是在传递字符串。如果是日期时间,则需要将字符串解析为日期时间。对于转换用途,

 DateTime.Parse("stringValue");

如果您想在不使用命令参数的情况下保存它,请转换您的日期值并如上所述进行检查。

查看您的实际SQL字符串。

您的值之一可能是一个空字符串。

还有托尔斯滕说的话。使用参数化查询。

我认为问题是你在插入语句中放入了没有"'"符号的字符串

尝试:

cmd = new SqlCommand("insert into purchaseOrder_master(sup_id,po_date,required_date,tot_amt,uid,potime) values("+supid.Text +",'"+podate.Value.Date+"','"+reqdate.Value.Date+"','"+pocost.Text +"','"+uid.Text +"','"+potime.Value.TimeOfDay  +"')", con);

正如您在这里所读到的,在执行insert语句时,每个字符串都需要用"'"环绕

试着调试代码并检查查询的确切形式。

此外,我认为可能的原因是

insert into purchaseOrder_master(sup_id,po_date,required_date,tot_amt,**uid**,potime

uid是一个关键字。将其替换为[uid]并检查

更改

"+uid.Text +"

'"+uid.Text +"'

"+supid.Text +"

'"+supid.Text +"'

因此

values("+supid.Text +",'"+podate.Value.Date+"','"+reqdate.Value.Date+"',"+pocost.Text +","+uid.Text +",'"+potime.Value.TimeOfDay  +"')

读取

values('"+supid.Text +"','"+podate.Value.Date+"','"+reqdate.Value.Date+"',"+pocost.Text +",'"+uid.Text +"','"+potime.Value.TimeOfDay  +"')

您的变量中有一个字符串。empty。突然,您生成了以下命令:在purchaseOrder_master(sup_id、po_date、required_date、tot_amt、uid、potime)中插入值('value1'、'value2'、'value3'…

您可以使用字符串格式来格式化您的命令