【发布时间】:2012-07-09 11:27:15
【问题描述】:
我有一个如下形式的 SQL 查询:
Update TableName Set TaskStatus=xxx where TaskID=xx;
我的 C# 代码中有这个 SQL 查询。
在一个 Excel 文件中,在 B 单元格下,我有一组语句,如 Rejected、Completed、Closed 等。我的 C# 代码读取这些单元格并采取适当的措施。例如,如果它读取已完成,则执行以下查询:
Update TableName Set TaskStatus=Completed where TaskID=xx;
我的问题是,在一个单元格中,我的值无法完成。当我的代码读取此单元格并将其合并到查询中时,
Update TableName Set TaskStatus=Can't Complete where TaskID=xx;
它会抛出一个错误,指出“应该关闭引号” 它假设 Can't 中的引号作为 SQL 关键字或 SQL 引号。我该如何克服这个问题?
【问题讨论】:
-
您需要引用并转义该值,即
Update TableName Set TaskStatus='Can''t Complete' where TaskID=xx;- 用单引号括起来并将字符串中的任何单引号加倍。组装 SQL 的代码在哪里 - 你能做到吗?实际上,如果您的查询在您的 C# 代码中,您应该使用参数化查询,这样您就可以将值传递给 Oracle,而无需将其插入到您的字符串中。 -
@Rup 它有效......你没有把它作为答案发布吗?我会接受它..
-
作为评论发布是因为我不确定您是在 Excel 中还是在 C# 代码中生成 SQL - 我可能只是没有很好地阅读这个问题。但是,您应该在 Csabo 的答案中使用参数化查询。