数字的 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 中的数字类型存储为二进制值。
我想获取数据库模式 (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 中的数字类型存储为二进制值。