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