数字的 ColumnSize 与原来的不同 (c#)(dBase)

ColumnSize of numeric is not same original (c#)(dBase)

我想获取数据库模式 (dBase),所以我使用 "oledb" 从 dbase 文件中获取数据以使用 getchemaTable获取数据的schema,但是numeric数据类型的"ColumnSize"不包含“19”。如原始数据,如"object_id" Type: nummeric column size: 12,但它returns输出为“19”。

我想显示完全相同的结果。但.. 我不知道接下来要做什么。

public static DataSet getStructureDBF(string dir, string input)
    {
        OleDbConnection objConn = new OleDbConnection(@"Provider=VFPOLEDB.1;Data Source=" +         dir + ";Persist Security Info=False;");
        objConn.Open();
        OleDbCommand objCmd = new OleDbCommand("Select * from " + input, objConn);

        OleDbDataReader objDataReader = objCmd.ExecuteReader();
        DataTable schemaTable = objDataReader.GetSchemaTable();
        DataSet dsnew = new DataSet();
        dsnew.Tables.Add(schemaTable);
        return dsnew;
    }

对于所有数据类型,dBASE 字段定义存储字段长度和精度。后者只与数字类型相关,前者是 digits 中的最大数字宽度,因为这就是 dBASE 存储数字的方式:实际的数字字符串。

dbf file format specification

编辑

请注意,数据类型 Numeric 和 Float 存储为数字串。较新版本的 dBASE 中的数字类型存储为二进制值。

另见 DBF reader implementation notes