【问题标题】:How to get rid of single quotes in {0} string parameter?如何去掉 {0} 字符串参数中的单引号?
【发布时间】: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 等命名参数,并使用 SqlCommandSqlParameter 类执行带有参数的查询。
  • 问题可能在于arParams是如何构建的。你能告诉我们那个代码吗?
  • Here's an example 在 SQL Server 中使用 C# 中的参数化查询。
  • 也许您可以使用 QUOTENAME({1}) 使其成为有效的列名。

标签: c# sql-server xml tsql ado.net


【解决方案1】:

抱歉,这是一个简单的错误。

它一开始就奏效了。如果参数周围没有给出单引号,'' 将不存在。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-18
    • 2021-12-21
    • 2019-04-23
    • 2023-03-14
    相关资源
    最近更新 更多