如何设置char的DBnull值

本文关键字:char DBnull 设置 何设置 | 更新日期: 2023-09-27 18:12:58

我正在处理从数据库中获取记录的应用程序。但当获取值的char数据类型为null时,它会显示错误。这是我的代码:

SqlDataReader reader = cmd.ExecuteReader();
        while (reader.Read())
        {
            lstServiceCall_Activity.Add(new OpportunityActivity()
            {
                Recontact = Convert.IsDBNull(reader["Recontact"]) ? (DateTime?)null : Convert.ToDateTime(reader["Recontact"]),
                endDate = Convert.IsDBNull(reader["endDate"]) ? (DateTime?)null : Convert.ToDateTime(reader["endDate"]),
                Details = (reader["Details"]) == DBNull.Value ? null : Convert.ToString(reader["Details"]),
                Location = (reader["Location"]) == DBNull.Value ? 0 : Convert.ToInt32(reader["Location"]),
                CardCode = (reader["CardCode"]) == DBNull.Value ? null : Convert.ToString(reader["CardCode"]),
                Action = Convert.ToChar(reader["Action"]),
                Priority = Convert.ToChar(reader["Priority"]),
                CntctType = Convert.ToChar(reader["CntctType"]),
                assignedTo = Convert.ToString(reader["AttendUser"])
            }
            );
        }       

对于char如何设置dbnull值。请提出一些建议。

如何设置char的DBnull值

不能将char设置为null,因此必须通过在char之后添加?使其可以为null,或者使用null终止符作为"空"字符的标识符:

char? canBeNull = null;
char nullTerminated = ''0';

你选择哪个选项取决于你,但我会选择选项1,因为这清楚地表明了你对这个变量的意图。

所以最终的结果是这样的:

char? Priority = reader["Priority"] != DBNull.Value
                 ? Convert.ToChar(reader["Priority"])
                 : (char?)null;
Action  = (reader["Action"]) == DBNull.Value ?''0' : Convert.ToChar(reader["Action"]),

像这样使用。