c# - 如何从 DataTable 获取小数的 NumericPrecision 和 Scale

标签 c# datatable

我需要在 C# 中的 DataTable 中获取列的确切类型。 在 simliar article on SO我找到了部分解决方案:

DataTable st = reader.GetSchemaTable();
foreach (DataRow row in st.Rows)
{
    Console.Write(string.Format("ColumnName:{0} DataType:{1} Ordinal:{2} Precision:{3} Size:{4} Scale:{5}", 
        row["ColumnName"], row["DataTypeName"], row["ColumnOrdinal"], 
        row["NumericPrecision"], row["ColumnSize"], row["NumericScale"]));
}

到目前为止,这适用于字符串和日期。

但对于小数,我总是收到 null 的精度和小数位数。 我需要这些值来在另一个数据库中创建一个新表。

返回的DataTypeDecimal

在 MSDN 文档中说,如果 NumericPrecision 不是数字数据类型,则返回 null,但小数是一种数字?

那么如何从 DataSet 中获取小数值的精确精度呢?或者更确切地说,我做错了什么?

编辑:

我正在尝试基于来自 FoxPro 应用程序的旧 .dbf 文件创建一些新的 SQL 数据库。 所以我想读取列,并在 SQL 中创建它们,因此我需要列的确切类型。

我尝试使用 .dbf 和一个新的 sql 数据库。 我在两者中都创建了一个表以确保知道确切的类型,对于这两个数据库我都得到了那些 null 返回值。只有十进制/数字值有问题,对于字符串和日期时间,我得到了大小。 对于 .dbf,我使用 OleDbConnection。 对于我使用 SqlConnection 的 SQL,如果我对每个都尝试它,我会得到 null。

最佳答案

根据我使用 MySQL 的经验,小数数据类型是数字,但它可以保持任何精度或小数位数。如果您尝试创建的数据库没有小数数据类型,您可能需要将其转换为不同类型的数字,并且可能需要猜测您需要的精度和小数位数。

关于c# - 如何从 DataTable 获取小数的 NumericPrecision 和 Scale,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35868375/

相关文章:

c# - 如何使用 "not in"执行 NHibernate QueryOver?

c# - 创建 StreamWriter 实例使应用程序崩溃并出现 RPC 错误

performance - QTP 数据表操作*极其*慢(在 MMDRV 批处理执行器下好多了)?

c# - 如何将数据从一个数据表传输到另一个数据表

python - Bokeh DataTable - 在选择回调上返回行和列

javascript - 如何在ASP.NET中动态添加数据库数据到Jquery控件?

c# - RadGrid 从项目模板按钮获取选定的行索引

c# - Paypal 与 asp.net 站点中的 paypal Web 服务集成

css - p :dataTable: Trigger rowSelect event when click embedded content (image)

c# - 遍历 DataTable 以查找 List 对象中的元素?