我使用的是從列獲取日期時間值:C#中使用SqlDataReader的我想
string date1 = reader. GetDateTime(reader. GetOrdinal("firstMove"). ToString()
但它拋出一個異常,特別是如果該值爲null ....
我使用的是從列獲取日期時間值:C#中使用SqlDataReader的我想
string date1 = reader. GetDateTime(reader. GetOrdinal("firstMove"). ToString()
但它拋出一個異常,特別是如果該值爲null ....
嘗試以下碼。
string date1=reader["coloumn name"].tostring();
謝謝。現在,如果我使用if語句檢查爲空或空,並且如果我可以重複多少次else?基本上我需要檢查約10個字符串爲空響應 –
用法如下,通過使用或函數來檢查是否爲null或不爲null。
if(string1 || string2 ||string3)
謝謝你的嘗試。這是a)不是答案,b)無效的C#代碼。 –
謝謝專家!!! @ Thorsten Dittmar。!! ans b。只是一個語法不完整的代碼。 – venkatesh
這甚至不是有效的語法,除非'string1','srting2'和'string3'是有效的'bool'值。這個「答案」現在沒有什麼幫助。你可以投入時間來寫你的評論,以改善你的「答案」,而不是...... –
,如果你告訴我們,你會得到什麼樣的異常你得到一個異常的事實會更容易解決。可能的錯誤有:
DateTime
,從而GetDateTime
完全不firstMove
工作是不是一個有效的列名在所有的,所以你不能訪問該列的假設列確實存在,其類型爲DateTime
的我傾向於使用如下:
DateTime? d = reader["firstMove"] as DateTime?;
這工作得很好。你要會讀
DateTime? d = reader["firstMove"] as DateTime?;
string dstring = d.HasValue ? d.Value.ToString() : "";
還是什麼:
string date1 = !reader.IsDBNull(reader.GetOrdinal("firstMove")) ? reader.GetDateTime(reader.GetOrdinal("firstMove").ToString() : String.Empty;
這將是對你更好,使用日期時間 - 而不是字符串,處理日期(或爲空的日期時間日期時間?)。
如果你想採用這種做法,您可以使用擴展方法:
public static class IDataReaderExtensions
{
public static DateTime GetDateTimeOrMinValue(this IDataReader dr, int position)
{
if (dr.IsDBNull(position))
{
return DateTime.MinValue;
}
return dr.GetDateTime(position);
}
public static DateTime? GetDateTimeOrNull(this IDataReader dr, int position)
{
if (dr.IsDBNull(position))
{
return null;
}
return dr.GetDateTime(position);
}
}
用法:
DateTime dateA = reader.GetDateTimeOrMinValue(reader.GetOrdinal("firstMove"));
DateTime? dateB = reader.GetDateTimeOrNull(reader.GetOrdinal("firstMove"));
你甚至可以提高擴展方法,所以它可以接收列名並在內部找到序位。
希望這有助於
的可能重複[SQL數據讀取器 - 處理空列值(http://stackoverflow.com/questions/1772025/sql-data-reader-handling-null-column-values ) – RichardOD
你的代碼不會被編譯。你能否展示簡短但完整的節目演示?你得到了什麼異常? –