数值的ColumnSize与原始的(C#)(dBase)不同

时间:2018-08-01 04:02:12

标签: c# dbf dbase

我想获取数据库架构(dBase),所以我使用“ oledb” 从dbase文件中获取数据,以便使用 getchemaTable 获取数据架构,但数字数据类型的“ ColumnSize” 不包括“ 19”。作为原始数据,例如“ object_id”,类型:数字列大小:12,但它将输出返回到“ 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;
    }

1 个答案:

答案 0 :(得分:0)

对于所有数据类型,dBASE字段定义存储字段长度和精度。后者仅与数字类型有关,而前者是最大数字宽度,以 digits 为单位,因为dBASE就是这样存储数字的:数字的实际字符串。

请参见dbf file format specification

修改

请注意,数据类型“数字”和“浮点数”存储为数字字符串。较新版本的dBASE中的数字类型存储为二进制值。

另请参见DBF reader implementation notes