这是我的SQL查询
string SqlStr = string.Format("
insert into Sales(date_,tsale,order_id,quant,crd_typ,client_id)
values(#{0}#,'{1}','{2}','{3}',{4},{5})", s.Date,s.Tsale,s.OrderId, s.Quant, s.CrdTyp, s.ClientId);
WinForm中的date_是DateTime,crd_typ是字符串,其余的是int。
Access中的是数据/时间,crd_typ是字符串,其余是int。
(int Access order_id是关键) 怎么了?
答案 0 :(得分:2)
首先,您不应该使用String.Format
构造查询,而是使用参数化查询来阻止SQL注入。
对于你的问题:
您说数据表中有一个DateTime
和一个String
。尽管如此,您的查询还是有一个DateTime
和三个String
参数。因此,至少有两个int
值为String
。可能是个问题。您可以使用参数化查询来解决此问题。
第二种可能是,你的字符串可能包含'
个字符。因此,可以在查询完成之前停止查询解析。您可以使用参数化查询来阻止这种情况。
你知道,你应该使用参数化查询。许多问题都会以这种方式解决。