';附近的语法不正确';.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);
我们应该多久重复一次使用参数化查询?!
using (SqlCommand cmd = new SqlCommand("insert into table (column) values (@param)", conn))
{
cmd.Parameters.AddWithValue("@param", value);
cmd.ExecuteNonQuery();
}
你的代码问题是:
- 对SQL注入开放
- DateTime值将无法正确处理(可能是现在的问题)
- 字符串必须正确处理(引号)
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'…
您可以使用字符串格式来格式化您的命令