我想获取数据库架构(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;
}
答案 0 :(得分:0)
对于所有数据类型,dBASE字段定义存储字段长度和精度。后者仅与数字类型有关,而前者是最大数字宽度,以 digits 为单位,因为dBASE就是这样存储数字的:数字的实际字符串。
请参见dbf file format specification
修改
请注意,数据类型“数字”和“浮点数”存储为数字字符串。较新版本的dBASE中的数字类型存储为二进制值。