我正在创建系统日志功能 我基本上需要做的是添加相关插入,将查询更新到具有日期时间和用户的单独表。 我的问题是,当我尝试插入插入查询作为行数据时,我收到错误。 我理解这是因为查询中的“'”。但我仍然需要重新运行这些查询。所以删除“'”对我来说不是一个选项。
以下是我要插入的查询:
insert into querylog (query,systemTime,user)
values
('INSERT INTO invoice(invoiceno,invoicenote,invoicetotal,nettotal,invoicedate,customer,receivedby,vehicleno) VALUES ('I 501','3223',15000,15000,'2013-12-06','C 116','','-')',
'12/6/2013 10:35:56 PM',
'Lakmal')
答案 0 :(得分:2)
尝试在内部“插入”语句中加倍撇号(两个单撇号,而不是双引号):
insert into querylog (query,systemTime,user)
values
('INSERT INTO invoice(invoiceno,invoicenote,invoicetotal,nettotal,invoicedate,customer,receivedby,vehicleno) VALUES (''I 501'',''3223'',15000,15000,''2013-12-06'',''C 116'','''',''-'')',
'12/6/2013 10:35:56 PM',
'Lakmal')
答案 1 :(得分:1)
您在值的开头处开始使用单引号。
然后你将它们中途结束。
替换:
values ('INSERT INTO invoice(invoiceno,invoicenote,invoicetotal,nettotal,invoicedate,customer,receivedby,vehicleno) VALUES ('I 501','3223',15000,15000,'2013-12-06','C 116','','-')','12/6/2013 10:35:56 PM','Lakmal')
使用:
values ("INSERT INTO invoice(invoiceno,invoicenote,invoicetotal,nettotal,invoicedate,customer,receivedby,vehicleno) VALUES ('I 501','3223',15000,15000,'2013-12-06','C 116','','-')','12/6/2013 10:35:56 PM','Lakmal")
答案 2 :(得分:0)
我同意Grant Winney,将撇号改为双撇号。
或者,首先准备语句,然后使用值作为参数执行它。有关示例,请参阅http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.prepare%28v=vs.110%29.aspx。最大的优点是你可以将你的字符串放入Command.Parameters中,而且你的Sql语句字符串中没有任何东西可以破坏insert命令的语法。