从SqlServer

时间:2015-09-30 10:07:47

标签: c# sql-server datetime

我在阅读来自我的通话表的电话时遇到问题。我的一个列是DateTime列,如果调用尚未关闭,则此列允许为null。当我执行我的C#代码来获取Calls表中的所有调用时,我得到一个错误,数据为空,当没有数据时无法读取。我想如果我有一个If语句检查该列是否为空,那将解决问题......但这不起作用。

以下是我遇到问题的代码:

public void GetAllCalls(Connection connectionObject)
    {
        try
        {
            if (memoryObject.GetCallCount() != 0)
            {
                memoryObject.DeleteAllCalls();
            }

            SqlCommand getCalls = new SqlCommand("sp_getAllCalls", connectionObject.getDatabaseConnection());
            getCalls.CommandType = CommandType.StoredProcedure;
            dataReader = getCalls.ExecuteReader();
            if (dataReader.HasRows)
            {
                while (dataReader.Read())
                {
                    if (dataReader.GetDateTime(8).Equals(DBNull.Value))
                    {
                        Call newCall = new Call(dataReader.GetString(0), dataReader.GetString(1), dataReader.GetString(2),
                        dataReader.GetString(3), dataReader.GetString(4), dataReader.GetString(5),
                        dataReader.GetString(6), dataReader.GetDateTime(7), Convert.ToDateTime(null),
                        dataReader.GetString(9), dataReader.GetString(10), dataReader.GetString(11),
                        dataReader.GetString(12));
                        memoryObject.AddCall(newCall);
                    }
                    else
                    {
                        Call newCall = new Call(dataReader.GetString(0), dataReader.GetString(1), dataReader.GetString(2),
                        dataReader.GetString(3), dataReader.GetString(4), dataReader.GetString(5),
                        dataReader.GetString(6), dataReader.GetDateTime(7), dataReader.GetDateTime(8),
                        dataReader.GetString(9), dataReader.GetString(10), dataReader.GetString(11),
                        dataReader.GetString(12));
                        memoryObject.AddCall(newCall);
                    }

                }
                dataReader.Close();
            }
            else
            {
                dataReader.Close();
                functionsObject.displayMessage("No Calls Found", "No calls were found on the system");
            }
        }
        catch (Exception error)
        {
            logNewError(error, "GetAllCalls", connectionObject);
        }

    }

1 个答案:

答案 0 :(得分:0)

检查使用SqlDataReader.IsDBNull method

的正确方法
if (dataReader.IsDBNull(8))