当我尝试将一个从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"));
正如我期望的那样工作。
感谢您提供的信息。