使用MS Access小数点分隔符从petapoco sql请求强制转换为双

时间:2019-07-03 19:51:49

标签: c# ms-access casting double petapoco

我正在从MS Access数据库获取记录。数据库十进制分隔符是逗号,我无法更改。 我猜测由于数据库和代码中的区域性不同,来自SQL结果的值转换为Double会返回错误值,因为它在数据库中不相同。 我正在使用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成员中强制返回3.2000000476837158。 我需要获得与数据库中完全相同的值。 有什么想法吗?

解决方案:

MS Access Single Real = C#中的浮点类型。 MS Access Double Real = C#中的双精度类型

1 个答案:

答案 0 :(得分:1)

如果属性是Double,我能够复制它,就像上面一样,但是Access数据库中的字段定义为单个:

Access

尝试将属性定义更改为Single,看看是否可以解决问题。

编辑:更正了我对类型名称的大小写。