使用 odbcDataReader 的 C#:将十进制值中的小数分隔符从 "." 更改为 ","



当我尝试将一个从odbcdatareader分配到'十进制'变量的值时,它会删除小数分离器"。该值本身被存储在我要从数据库中检索数据的数据库中。我试图使用这样的培养物:

   CultureInfo myCI = new CultureInfo("en-US", false);
   myCI.NumberFormat.NumberDecimalSeparator = ",";
   OdbcDataReader Reader = null;
   OdbcCommand cmd = new OdbcCommand("...");
   cmd.Connection = cn;
   Reader = cmd.ExecuteReader();
          if (Reader.HasRows)
                {
                    while (Reader.Read())
                    {
                        *(decimal variable)* p = Convert.ToDecimal(Reader["Decimal Value"], myCI);
                    }
                }

我位于欧盟中,如果这很有意义,我们的默认十进制分离器是",但是我必须连接到使用"使用"的另一个DB。作为十进制的Semperator,我无法将默认的小数点设置更改为",我只需要使用此值使用",作为十进制的Seperator。我觉得我的问题是在Cultureinfo中,但找不到明确的解决方案。

希望这是有道理的,谢谢。

您可以尝试;

while (Reader.Read())
{
*(decimal variable)* p = Convert.ToDecimal(Reader["Decimal Value"], myCI);
}

to

while (Reader.Read())
{
    decimal p = 0;
    decimal.TryParse(Reader["ColumnName"].ToString().Replace('.',','), out p);
}

while (Reader.Read())
{
    double p = double.Parse(Reader["ColumnName"].ToString(), CultureInfo.InvariantCulture);
}

小数变量是错误的选择,我将其更改为双重选择,并且代码p = Reader.GetDouble(Reader.GetOrdinal("Value"));正如我期望的那样工作。

感谢您提供的信息。

相关内容

  • 没有找到相关文章

最新更新