0

例如,如果我的小数以不同的文化设置存储在数据库中,并且我想通过 SqlDataReader 将它们获取到我的程序中,我真的无法找到明确的答案。将','和'。只要将 SQL-DB 中的数据类型设置为十进制,就总能正确解析并转换为我当前的文化吗?

如果它们存储在 varchar 中并尝试使用 .GetDecimal() 会发生什么?

4

1 回答 1

3

.net SqlDataReader 方法是否文化不变

SqlDataReader不使用任何CultureInfo或等效的东西。它不了解文化。

当您的值以十进制形式存储在数据库中时,SqlDataReader 将接收该十进制值。它们在您的应用程序中的(字符串)表示方式取决于您的操作方式:只需 withdataReader["myColumn"].ToString()将使用您当前的CultureInfo. 如果您想要不同的文化,则必须明确提供。

如果它们存储在 varchar 中并尝试使用 .GetDecimal() 会发生什么?

当它们存储为字符串时,您会遇到问题(至少如果您不知道创建这些字符串的文化)。您必须使用正确CultureInfo的方法首先解析这些字符串以获得正确的值。但是,无论如何,为什么要将数字作为字符串存储在数据库中呢?

于 2018-07-13T11:37:17.583 回答