例如,如果我的小数以不同的区域性设置存储在数据库中,并且我想通过SqlDataReader将它们放入程序中,那么我将无法真正找到最终的答案。请问“,”和“。”只要将SQL-DB中的数据类型设置为十进制,就总是可以正确解析并转换为当前的区域性?
如果将它们存储在varchar中并尝试使用.GetDecimal()会发生什么?
答案 0 :(得分:3)
.net SqlDataReader方法是否具有文化不变性
SqlDataReader
不使用任何CultureInfo
或类似的东西。它不了解文化。
当您的值以十进制形式存储在数据库中时,SqlDataReader会接收该十进制值。它们在应用中的表示方式(字符串)取决于您的操作方式:只需使用dataReader["myColumn"].ToString()
即可使用当前的CultureInfo
。如果您想要不同的文化,则必须明确提供。
如果将它们存储在varchar中并尝试使用.GetDecimal()会发生什么?
将它们存储为字符串时,您会遇到问题(至少,如果您不知道创建这些字符串所使用的区域性)。您必须使用正确的CultureInfo
首先对这些字符串进行解析才能获得正确的值。但是无论如何,为什么还要将数字作为字符串存储在数据库中?