将列表转换为数据表以在存储过程中传递表类型

亨利·ACN

我有一个Web API调用,在这里我将对象列表发送到存储的proc。我正在创建要发送到存储过程的数据表,但是当我尝试将其添加到数据表时,它立即返回500状态。

    private static DataTable CreateTable()
    {
        DataTable dt = new DataTable();
        dt.Columns.Add("Project_Name", typeof(int));
        dt.Columns.Add("Project_Staffing_Period", typeof(DateTime));
        dt.Columns.Add("Employment_Start_Date", typeof(DateTime));
        dt.Columns.Add("Employment_Rate_Type_Code", typeof(string));
        dt.Columns.Add("Employment_Rate_Effective_Date", typeof(DateTime));
        dt.Columns.Add("Company_ID", typeof(int));
        dt.Columns.Add("Person_ID", typeof(int));
        dt.Columns.Add("Project_Role_Type_Code", typeof(string));
        dt.Columns.Add("Staffed_Hours", typeof(decimal));
        dt.Columns.Add("CreateID", typeof(string));
        dt.Columns.Add("CreateTS", typeof(DateTime));
        dt.Columns.Add("UpdateID", typeof(string));
        dt.Columns.Add("UpdateTS", typeof(DateTime));
        return dt;
    }

这是我的数据表格式。

    public class ProjectStaffing
    {
        public string ProjectName { get; set; }
        public DateTime ProjectStaffingPeriod { get; set; }
        public DateTime EmploymentStartDate { get; set; }
        public string EmploymentRateTypeCode { get; set; }
        public DateTime EmploymentRateEffectiveDate { get; set; }
        public int CompanyID { get; set; }
        public int PersonID { get; set; }
        public string ProjectRoleTypeCode { get; set; }
        public decimal StaffedHours { get;set; }
        public string CreateID { get; set; }
        public string UpdateID { get; set; }
        public DateTime CreateTS { get; set; }
        public DateTime UpdateTS { get; set; }

这是我的课程格式


        public async Task<string> CreateProjectStaffingByDateRange(List<ProjectStaffing> projectstaffings)
        {
            string statusMessage;
            DataTable dt = CreateTable();

            for(int i = 0; i < projectstaffings.Count; i++)
            {
                dt.Rows.Add(projectstaffings[i].ProjectName, projectstaffings[i].ProjectStaffingPeriod, 
                    projectstaffings[i].EmploymentStartDate, projectstaffings[i].EmploymentRateTypeCode, 
                    projectstaffings[i].EmploymentRateEffectiveDate, projectstaffings[i].CompanyID, 
                    projectstaffings[i].PersonID, projectstaffings[i].ProjectRoleTypeCode, projectstaffings[i].StaffedHours, 
                    projectstaffings[i].CreateID, projectstaffings[i].CreateTS, projectstaffings[i].UpdateID, projectstaffings[i].UpdateTS);
            }

            using (SqlConnection conn = new SqlConnection(Connection))
            {
                conn.Open();
                SqlParameter returnValue; //Holds the bit that determines if insert was successful or not
                SqlCommand command;
                returnValue = new SqlParameter();
                command = new SqlCommand();
                command.Connection = conn;
                command.CommandType = CommandType.StoredProcedure;
                command.CommandText = "USP_Add_Project_Staffing_By_Date_Range";
                command.Parameters.AddWithValue("@TempTable", dt);

                command.Parameters.Add(new SqlParameter("@statusMessage", SqlDbType.NVarChar, -1)).Direction = ParameterDirection.Output;
                returnValue.Direction = ParameterDirection.ReturnValue;
                command.Parameters.Add(returnValue);

                await command.ExecuteNonQueryAsync().ConfigureAwait(false);
                statusMessage = command.Parameters["@statusMessage"].Value.ToString().Trim();
            }
            return statusMessage;
        }


这是我给服务器的电话。而我将行添加到数据表的地方是它失败并返回500状态。

我是否将数据表错误地插入?我匹配了数据类型。我已经检查了要插入的顺序。所有值都不为空。

一些样本值可能是

ProjectName: "Project 1"
ProjectStaffingPeriod: "Oct 4, 2019"
EmploymentStartDate: "Oct 4, 2019"
EmploymentRateTypeCode: "NA Rate"
EmploymentRateEffectiveDate: "Oct 4, 2019"
CompanyID: 1
PersonID: 1
ProjectRoleTypeCode: "BA"
StaffedHours: 8.0
CreateID: "person1"
UpdateID: "person1"
CreateTS: "Oct 4, 2019 11:00 AM"
UpdateTS: "Oct 4, 2019 11:00 AM"
唐纳德

我不知道其余的设置,但是您似乎将列项目名称作为int添加到数据表中

    dt.Columns.Add("Project_Name", typeof(int));

但这是你班上的一个字符串

    public string ProjectName { get; set; }

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

SQL Server存储过程中的多个表类型参数

来自分类Dev

将数据集数据表转换为IList <DataTable>类型

来自分类Dev

将char输入转换为用户定义的表类型并从其他存储过程调用一个存储过程?

来自分类Dev

在SQL Server存储过程中创建表类型参数

来自分类Dev

将列表转换为数据表

来自分类Dev

在存储过程中将nvarchar数据类型转换为datetime数据类型

来自分类Dev

由存储过程中的IN运算符导致将数据类型nvarchar转换为bigint时出错

来自分类Dev

将数据表转换为列表,反之亦然

来自分类Dev

将通用嵌套列表转换为数据表

来自分类Dev

使用表类型将表变量传递到存储过程中?

来自分类Dev

将模型内的数据转换为数据表或数组

来自分类Dev

将字典数据转换为数据表

来自分类Dev

将数据帧列表转换为R中的平面数据表

来自分类Dev

将列表转换为数据表

来自分类Dev

将数据表转换为固定类型的模型

来自分类Dev

将JSON数据转换为数据表

来自分类Dev

PHP PDO unixODBC FreeTDS SQL Server在存储过程中“将数据类型varchar(max)转换为datetime”

来自分类Dev

将列表转换为数据表

来自分类Dev

数据表-将字符串转换为日期类型过滤器错误

来自分类Dev

将表作为变量传递以在mysql存储过程中循环

来自分类Dev

SQL查询将nvarchar转换为数据类型int在存储过程中出错

来自分类Dev

将通用嵌套列表转换为数据表

来自分类Dev

如何用另一个过程将数据插入到存储过程中的临时表中?

来自分类Dev

如何在带有多个参数的sql存储过程中传递数据表

来自分类Dev

将excel转换为c#中的数据表?

来自分类Dev

无法将列表对象转换为数据表

来自分类Dev

将嵌套列表转换为数据框/数据表

来自分类Dev

无法将 json 转换为数据集、数据表

来自分类Dev

如何在存储过程中将测试数据表作为参数传递

Related 相关文章

  1. 1

    SQL Server存储过程中的多个表类型参数

  2. 2

    将数据集数据表转换为IList <DataTable>类型

  3. 3

    将char输入转换为用户定义的表类型并从其他存储过程调用一个存储过程?

  4. 4

    在SQL Server存储过程中创建表类型参数

  5. 5

    将列表转换为数据表

  6. 6

    在存储过程中将nvarchar数据类型转换为datetime数据类型

  7. 7

    由存储过程中的IN运算符导致将数据类型nvarchar转换为bigint时出错

  8. 8

    将数据表转换为列表,反之亦然

  9. 9

    将通用嵌套列表转换为数据表

  10. 10

    使用表类型将表变量传递到存储过程中?

  11. 11

    将模型内的数据转换为数据表或数组

  12. 12

    将字典数据转换为数据表

  13. 13

    将数据帧列表转换为R中的平面数据表

  14. 14

    将列表转换为数据表

  15. 15

    将数据表转换为固定类型的模型

  16. 16

    将JSON数据转换为数据表

  17. 17

    PHP PDO unixODBC FreeTDS SQL Server在存储过程中“将数据类型varchar(max)转换为datetime”

  18. 18

    将列表转换为数据表

  19. 19

    数据表-将字符串转换为日期类型过滤器错误

  20. 20

    将表作为变量传递以在mysql存储过程中循环

  21. 21

    SQL查询将nvarchar转换为数据类型int在存储过程中出错

  22. 22

    将通用嵌套列表转换为数据表

  23. 23

    如何用另一个过程将数据插入到存储过程中的临时表中?

  24. 24

    如何在带有多个参数的sql存储过程中传递数据表

  25. 25

    将excel转换为c#中的数据表?

  26. 26

    无法将列表对象转换为数据表

  27. 27

    将嵌套列表转换为数据框/数据表

  28. 28

    无法将 json 转换为数据集、数据表

  29. 29

    如何在存储过程中将测试数据表作为参数传递

热门标签

归档