【发布时间】:2014-10-17 02:26:52
【问题描述】:
我做了一个服务,它从物理 xml 文件中检索 sql 命令。
看起来像:
<Sql>
<![CDATA[
SELECT
MAX(COMM_HIST_NO) AS COMM_HIST_NO
, MAX(COMMUTER_NO) AS COMMUTER_NO
, MAX(ARRIVED_AT_WORK) AS ARRIVED_AT_WORK
, MAX(LEFT_WORK) AS LEFT_WORK
FROM COMMUTE_HISTORY
WHERE COMMUTER_NO = {0}
AND DATEDIFF(DAY, {1}, GETDATE()) = 0
]]>
</Sql>
以下是将 sql 命令作为字符串返回的内容:
// arParams is an Array.
string.Format(xmlDoc.SelectSingleNode("/SVC/Sql").InnerText,arParms)
{1} 将是一个列名,我希望将我的 {1} 参数写为没有单引号的列名。
具体来说,Java中的Mybatis提供了${param}和#{param},后者去掉了字符串参数中的单引号。
.NET 一定是开发了这个功能!
【问题讨论】:
-
您想使用参数化查询。如果这是 SQL Server,您可以在查询中使用
COMMUTER_NO = @commuterNo等命名参数,并使用SqlCommand和SqlParameter类执行带有参数的查询。 -
问题可能在于arParams是如何构建的。你能告诉我们那个代码吗?
-
Here's an example 在 SQL Server 中使用 C# 中的参数化查询。
-
也许您可以使用 QUOTENAME({1}) 使其成为有效的列名。
标签: c# sql-server xml tsql ado.net