簡體   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