在我的c#代碼中,我嘗試設置爲SQL管理2008 R2數據庫中float類型的值(它對應於在C#中的雙精度,對吧?)。當我使用這種語法指定的強制轉換無效 - SQL float to C#double
double x = (double)reader["column1"]; //reader is SqlDataReader object
我得到錯誤「指定的轉換無效」。
什麼給?
在我的c#代碼中,我嘗試設置爲SQL管理2008 R2數據庫中float類型的值(它對應於在C#中的雙精度,對吧?)。當我使用這種語法指定的強制轉換無效 - SQL float to C#double
double x = (double)reader["column1"]; //reader is SqlDataReader object
我得到錯誤「指定的轉換無效」。
什麼給?
我會建議使用可通過SqlDataReader對象的輔助類...
double dbl = reader.GetDouble(reader.GetOrdinal("DoubleColumn"));
如果有機會列可能爲空,你應該交流計算該...
double dbl = (reader["DoubleColumn"] != DBNull.Value ? dr.GetDouble(dr.GetOrdinal("DoubleColumn")) : 0.0);
謝謝。這將檢查null,如果是,則將值設置爲0,這是我需要的。 – Skitterm 2012-08-01 20:00:15
使用Convert.ToDouble
方法:
double x = Convert.ToDouble(reader["column1"]);
你可以簡單地GetDouble
直接:
reader.GetDouble(reader.GetOrdinal("column1"))
也確保您在調用此方法之前調用IsDBNull檢查空值。 – YetAnotherUser 2012-08-01 19:46:18
如果是'float',你嘗試鑄造'float'?! – banging 2012-08-01 19:47:56
這是一個雙 - 這是不尋常的,但SQL中的浮點數對應於c#中的double。 – Skitterm 2012-08-01 19:50:45
顯然不是! – banging 2012-08-01 19:51:12