首页 > 解决方案 > 在 SQL C# 的 SELECT 语句中使用参数

问题描述

我有以下 T-SQL 查询在 SSMS 中正常工作。

DECLARE @StartDTTM DATE = '2020-04-25'
DECLARE @EndDTTM DATE = '2020-05-02'

CREATE TABLE #Temp
(
    D_Date DATE,
)

WHILE @StartDTTM <= @EndDTTM
BEGIN
    INSERT INTO #Temp
        SELECT @StartDTTM AS D_DATE

    SET @StartDTTM = DATEADD(DAY, 1, @StartDTTM)
END

SELECT * FROM #Temp
DROP TABLE #Temp

但是,当从 C# & 调用时System.Data.SqlClient,所有列都已硬编码 startdate 并且迭代日期没有出现。

using (SqlCommand cmd = new SqlCommand(QueryText))
{
    cmd.Connection = conn;
    cmd.CommandType = CommandType.Text;

    SqlParameter param;
    param = new SqlParameter("@StartDTTM", '2020-04-25');
    cmd.Parameters.Add(param);
    param = new SqlParameter("@EndDTTM", '2020-05-02');
    cmd.Parameters.Add(param);

    using (SqlDataAdapter da = new SqlDataAdapter())
    {
        da.SelectCommand = cmd;
        da.Fill(ds);
    };
};

编辑 1:我在查询中有额外的逻辑。我正在尝试获取位于两个日期列之间的迭代日期表中的值,基本上是迭代日期值的快照。希望能帮助到你

编辑 2:当通过 SQL 命令传递时,@StartDTTM将更改为值,然后将查询传递给 SQL。因此,这些行都是开始日期。有解决办法吗?

标签: c#sql-servertsql

解决方案


推荐阅读