Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在C中获得奇怪的值_C#_Sql Server - Fatal编程技术网

C# 在C中获得奇怪的值

C# 在C中获得奇怪的值,c#,sql-server,C#,Sql Server,在存储过程中获取完全正确的数据。但当我试图在C数据表中获取该值时,得到的数据是错误的。我不知道为什么我会这样 以下是我的存储过程: SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER PROCEDURE [dbo].[GetSurveyStatistic] (@SurveyID int, @NameOfSubmitter varchar(200), @NameOfPrivacyContact varchar(

在存储过程中获取完全正确的数据。但当我试图在C数据表中获取该值时,得到的数据是错误的。我不知道为什么我会这样

以下是我的存储过程:

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [dbo].[GetSurveyStatistic]
    (@SurveyID int,
     @NameOfSubmitter varchar(200),
     @NameOfPrivacyContact varchar(200),
     @HspOrganizationalName varchar(200),
     @HspSiteNumber varchar(200),
     @FromDate datetime,
     @ToDate datetime,
     @weekly bit)
AS
BEGIN
    IF (@ToDate IS NOT NULL) 
        SET @ToDate = DATEADD(DAY, 1, @ToDate)

    IF @Weekly = 0 
    BEGIN
        SELECT
            CAST(CAST(StartedDateTime AS date) AS varchar(10)) Value, 
            COUNT(*) cnt
        FROM
            SubmittedSurveys
        WHERE
            (SurveyID = @SurveyID OR @SurveyID IS NULL)
            AND (StartedDateTime >= @FromDate OR @FromDate IS NULL)
            AND (StartedDateTime <= @ToDate OR @ToDate IS NULL)
            AND (LOWER(ProvidedNameOfSubmitter) LIKE LOWER(@NameOfSubmitter) + '%' 
                 OR @NameOfSubmitter IS NULL OR @NameOfSubmitter = '')
            AND (LOWER(NameOfPrivacyContact) LIKE LOWER(@NameOfPrivacyContact) + '%' 
                 OR @NameOfPrivacyContact IS NULL
                 OR @NameOfPrivacyContact = '')
            AND (LOWER(HspOrganizationalName) LIKE LOWER(@HspOrganizationalName) + '%'  
                 OR @HspOrganizationalName IS NULL
                 OR @HspOrganizationalName = '')
            AND (LOWER(HspSiteNumber) LIKE LOWER(@HspSiteNumber) 
                 OR @HspSiteNumber IS NULL OR @HspSiteNumber = '')
        GROUP BY
            CAST(StartedDateTime AS date)
        ORDER BY 
            1
    END
    ELSE BEGIN
        SELECT
            CAST(DATEPART(WEEK, StartedDateTime) AS varchar(10)) Value, 
            COUNT(*) cnt
        FROM
            SubmittedSurveys
        WHERE
            (SurveyID = @SurveyID OR @SurveyID IS NULL)
            AND (StartedDateTime >= @FromDate OR @FromDate IS NULL)
            AND (StartedDateTime <= @ToDate OR @ToDate IS NULL)
            AND (LOWER(ProvidedNameOfSubmitter) LIKE LOWER(@NameOfSubmitter) + '%' 
                 OR @NameOfSubmitter IS NULL OR @NameOfSubmitter = '')
            AND (LOWER(NameOfPrivacyContact) LIKE LOWER(@NameOfPrivacyContact) + '%' 
                 OR @NameOfPrivacyContact IS NULL
                 OR @NameOfPrivacyContact = '')
            AND (LOWER(HspOrganizationalName) LIKE LOWER(@HspOrganizationalName) + '%'  
                 OR @HspOrganizationalName IS NULL
                 OR @HspOrganizationalName = '')
            AND (LOWER(HspSiteNumber) LIKE LOWER(@HspSiteNumber) 
                 OR @HspSiteNumber IS NULL OR @HspSiteNumber = '')
        GROUP BY
            CAST(DATEPART(WEEK, StartedDateTime) AS varchar(10))
        ORDER BY 
            1
    END
END
下面是结果

但在前端,获取值=日期,而不是周值

这是前端的代码

public static List<SubmittedSurveys> GetSurveyStatistic(int SubmittedSurveyId, DateTime                 
     StartedDateTime, string NameOfSubmitter, string NameOfPrivacyContact, string 
     HspOrganizationalName, string HspSiteNumber,
     DateTime CompletedDateTime,bool weekly)
{
     try
     {
         DatabaseProviderFactory factory = new DatabaseProviderFactory();
         Database _wohcDB = factory.Create("SurveyToolDBEntities");
         // SqlDatabase _wohcDB = DatabaseFactory.CreateDatabase("SurveyToolDBEntities") as 
      SqlDatabase;

         string sqlCommand = "[GetSurveyStatistic]";

         DbCommand dbCommand = _wohcDB.GetStoredProcCommand(sqlCommand);

         _wohcDB.AddInParameter(dbCommand, "@SurveyID", DbType.Int32, SubmittedSurveyId);
         _wohcDB.AddInParameter(dbCommand, "@FromDate", DbType.DateTime, StartedDateTime);
         _wohcDB.AddInParameter(dbCommand, "@ToDate", DbType.DateTime, CompletedDateTime);
         _wohcDB.AddInParameter(dbCommand, "@NameOfSubmitter", DbType.String, NameOfSubmitter);
         _wohcDB.AddInParameter(dbCommand, "@NameOfPrivacyContact", DbType.String, NameOfPrivacyContact);
         _wohcDB.AddInParameter(dbCommand, "@HspOrganizationalName", DbType.String, HspOrganizationalName);
         _wohcDB.AddInParameter(dbCommand, "@HspSiteNumber", DbType.String, HspSiteNumber);
         _wohcDB.AddInParameter(dbCommand, "@weekly", DbType.String, weekly);

         DataSet ds = _wohcDB.ExecuteDataSet(dbCommand);

         _submittedSurvey = ReportsController.DbConverter.DataTable2List<SubmittedSurveys>(ds.Tables[0]);
         //_submittedSurvey[0].SurveyReports = ReportsController.DbConverter.DataTable2List<Reports>(ds.Tables[1]);
    }
    catch (Exception ex)
    {
        string message = ex.Message.ToString();
    }

    return _submittedSurvey;
}
这是前端的屏幕截图,我将错误的值作为日期而不是周

有人能帮我解决这个问题吗。这太奇怪了。我也尝试在int中强制转换,但得到的错误是日期不能转换为int。我不确定为什么我在前端得到错误的数据,在后端得到正确的数据

请帮助我。

尝试更改:

   _wohcDB.AddInParameter(dbCommand, "@weekly", DbType.String, weekly);
致:


只要运行else部分,它就会正常工作。由于@Weekly=0,此查询将始终转到if语句。

Weekly的确切值是多少?不要猜测。为什么要将DbType.String用作布尔/位?周值为53。我正在将周转换为nvarchar10。这就是为什么我在前端使用字符串。要获得53作为字符串,我指的是_wohcDB.AddInParameterdbCommand,@weekly,DbType.String,weekly;。周值是53不,不是。它的数据类型是bool bool weekly。我会再问一次-weekly的C布尔值是多少?是的,在我的例子中是这样的。正如你所说,我运行else部分只删除if-else语句。非常感谢。这只是因为你传递了错误的每周值才起作用。
   _wohcDB.AddInParameter(dbCommand, "@weekly", DbType.Boolean, weekly);