我正在读取DBF文件的字段类型。我也正在创建DBF文件。我正在使用oledb读取器获取文件类型。阅读器总是返回十进制类型的天气我设置数字,浮动或双。为什么会这样呢?为什么读取器不返回存储在DBF中的相同类型?
发布于 2015-11-29 08:10:01
不同的提供程序可以将DBF的物理字段类型映射到不同的OLEDB字段类型。
另一个问题是,如果选择表达式(select amt * 0.01 from foo)而不是裸字段,并且不显式(select cast(amt * 0.01 as currency) from foo)将结果强制转换为某种类型(select cast(amt * 0.01 as currency) from foo),则SQL结果类型会引发猜测。同样,在这种情况下,不同的提供者/引擎可能会给出不同的结果;有些--比如VFP9提供者--允许显式转换,而有些则不允许显式转换。
如果您切换到不同的提供商,您可能会得到更好的结果。例如,Fox字段类型'I‘(整数)、'B’(双)、'Y‘(货币)和'N’(数字)忠实地映射到相应的OLEDB/ADO字段类型 adInteger、adDouble、adCurrency和adNumeric。另一方面,Fox提供程序只理解与Clipper和dBASE 3或A上下对应的Fox字段类型和遗留DBF类型。它不能读取更新的dBASE版本生成的表。
一些免费可用的OLEDB提供程序能够理解一些DBF方言或其他方言;哪一种最适合,取决于DBF文件的类型。
DBF文件结构相当简单;根据应用程序的不同,直接从DBF头中的字段定义中提取元数据可能是有意义的。
https://stackoverflow.com/questions/33774148
复制相似问题