使用 MS Access 小数点分隔符从 petapoco sql 请求中转换双精度值
Casting double from petapoco sql request with MS Access decimal separator comma
我正在从 MS Access 数据库中获取记录。数据库小数点分隔符是逗号,我无法更改。
SQL 结果中的值转换为 Double return 错误值,因为它在数据库中不相同,我猜是因为数据库和代码中的文化不同。
我正在使用 Petapoco 库。
可能有一种方法可以将文化设置到 Petapoco 中,但是如何设置?
public class TExternalProp
{
public String ObjectID { get; set; }
public String ObjectTable { get; set; }
public String PropName { get; set; }
public int PropType { get; set; }
public String PropStringValue { get; set; }
public Double PropDoubleValue { get; set; }
public int PropIntValue { get; set; }
}
sql = Sql.Builder.Append("WHERE ObjectID=@0 AND ObjectTable=@1 AND PropType<>@2 ", this.box_CMSID, "TSelectiveBox", 4);
sql.Append("ORDER BY PropName ASC;");
foreach (TExternalProp item in petaDb.Fetch<TExternalProp>(sql))
{
myViewModel.ObCol_BoiteInstructions.set_values(item.PropName, item.PropType, item.PropStringValue, item.PropDoubleValue, item.PropIntValue);
}
数据库中的值为3.2,在PropDoubleValue成员中强制转换return 3.2000000476837158。
我需要获得与数据库中完全相同的值。
有什么想法吗?
解法:
MS Access Single Real = C# 中的 float 类型。 MS Access Double Real = C# 中的 double 类型
如果 属性 是一个 Double
,我可以复制这个,正如你上面所说的,但是 Access 数据库中的字段被定义为一个:
尝试将您的 属性 定义更改为 Single
,看看是否能解决问题。
编辑: 更正了我对类型名称的大写。
我正在从 MS Access 数据库中获取记录。数据库小数点分隔符是逗号,我无法更改。 SQL 结果中的值转换为 Double return 错误值,因为它在数据库中不相同,我猜是因为数据库和代码中的文化不同。 我正在使用 Petapoco 库。
可能有一种方法可以将文化设置到 Petapoco 中,但是如何设置?
public class TExternalProp
{
public String ObjectID { get; set; }
public String ObjectTable { get; set; }
public String PropName { get; set; }
public int PropType { get; set; }
public String PropStringValue { get; set; }
public Double PropDoubleValue { get; set; }
public int PropIntValue { get; set; }
}
sql = Sql.Builder.Append("WHERE ObjectID=@0 AND ObjectTable=@1 AND PropType<>@2 ", this.box_CMSID, "TSelectiveBox", 4);
sql.Append("ORDER BY PropName ASC;");
foreach (TExternalProp item in petaDb.Fetch<TExternalProp>(sql))
{
myViewModel.ObCol_BoiteInstructions.set_values(item.PropName, item.PropType, item.PropStringValue, item.PropDoubleValue, item.PropIntValue);
}
数据库中的值为3.2,在PropDoubleValue成员中强制转换return 3.2000000476837158。 我需要获得与数据库中完全相同的值。 有什么想法吗?
解法:
MS Access Single Real = C# 中的 float 类型。 MS Access Double Real = C# 中的 double 类型
如果 属性 是一个 Double
,我可以复制这个,正如你上面所说的,但是 Access 数据库中的字段被定义为一个:
尝试将您的 属性 定义更改为 Single
,看看是否能解决问题。
编辑: 更正了我对类型名称的大写。