繁体   English   中英

我无法从 C#.NET 中的 DataBase 获取 Null 值

[英]I cannot get Null values from DataBase in C#.NET

       try
        { var sql = "SELECT ti_id_10888, ti_summary_10888, ti_description_10888, ti_estimation_10888, ti_priority_10888, ti_status_10888, ti_sprint_id_10888 FROM ti_ticket";
            var command = new SqlCeCommand(sql, connection);
            connection.Open();
            var reader = command.ExecuteReader();
            while (reader.Read())
            {
                var t = GetFromReader(reader);
                result.Add(t);
            }
        }

        return result;
    }

    private Ticket GetFromReader(SqlCeDataReader reader)
    {
        var t = new Ticket
        {
            Id = Convert.ToInt32(reader.GetValue(0)),
            Summary = reader.GetValue(1).ToString(),
            Description = reader.GetValue(2).ToString(),
            Estimation = Convert.ToInt32(reader.GetValue(3)),
            Priority = reader.GetValue(4).ToString(),
            Status = reader.GetValue(5).ToString(),
            Sprint = new SprintManager().GetById(Convert.ToInt32(reader.GetValue(6)))
        };

        return t;
    }

我的数据中有空值,请帮忙? 我必须获取所有为空或非空值的行

错误是“对象不能将 DBNULL 转换为其他类型”

如果你不介意添加它,你存储什么类型的数据,另外请添加Ticket对象结构,哪些数据应该为空。 如果它是int,double ...确保将其设置为“int?” 使其成为可空值。 这里是对可为空值类型的引用: https : //docs.microsoft.com/en-us/dotnet/csharp/language-reference/builtin-types/nullable-value-types

我发现可能适合的另一个类似答案是: https : //www.codeproject.com/Questions/686283/Object-cannot-be-cast-from-DBNull-to-other-types-e

编辑:

如果您的 sprint_id 为 null,则“Convert.ToInt32(reader.GetValue(6))”将是“Convert.ToInt32(null)”,这会导致错误,因此在尝试转换之前请确保它返回实际数字。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM