我發現了一個解決此錯誤的解決方法,但我現在真的很好奇爲什麼會發生這種情況,想知道是否有其他人有這個錯誤。從數據讀取器解析小數
我的功能如下:
public void Blog_GetRating(int blogID, ref decimal rating, ref int voteCount)
{
// Sql statements
// Sql commands
if (DataReader.Read())
{
// this line throws a 'Input string was not in a correct format.' error.
rating = decimal.Parse(DataReader["Rating"].ToString());
// this works absolutly fine?!
decimal _rating = 0;
decimal.TryParse(DataReader["Rating"].ToString(), out _rating);
rating = _rating;
}
}
有誰看到過?
什麼是更加古怪的是,如果我輸入:
rating = decimal.Parse("4.0");
工作正常,在4.0什麼是從我的DataReader出來。
正如我前面所說,TryParse方法工作正常,所以它不阻止我攜帶,但現在我真的很感興趣,看看有沒有人有答案。
期待一些回覆!
肖恩
編輯 - 解決
的decimal.Parse方法做工精細,功能正在運行第二次(是在一個循環中),後沒有被評爲所以數據讀取器返回空值。在我的SQL計算中包裝COALESCE解決了這個問題。因此,正如你所說的那樣,爲什麼tryparse方法沒有拋出異常,只是將默認值0保留爲_rating。
爲什麼不把列設爲數字,所以不需要解析? – 2009-09-01 15:55:25