在C#中检查SQL列的类型

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在C#中检查SQL列的类型相关的知识,希望对你有一定的参考价值。

我在这里搜索并发现了一些与此问题有关的线索,但他们没有帮助我。我需要检查某个数据表中SQL列的类型并进行比较。所以假设我有一个名为“CustomerName”的列,这是SQL中的varchar。然后我想将它与字符串或其他“varchar”进行比较,并检查它是否匹配。例如,当我的列的类型为numeric且字符串的值为“varchar”时,它应该失败。我认为字符串的情况是个坏主意(例如,当我有varchar(50)并将其与“varchar”进行比较时)。有没有办法做到这一点?

答案
    SqlDataReader read = command.ExecuteReader();
    while (read.Read())
    {
        for (int i = 0; i < read.FieldCount; i++)
        {
            Type dataType = read.GetFieldType(i);
            if (dataType == typeof(int))
            {
                // Do for integers (INT, SMALLINT, BIGINT)
            }
            else if (dataType == typeof(double))
            {
                // Do for doubles (DOUBLE, DECIMAL)
            }
            else if (dataType == typeof(string))
            {
                // Do for Strings (VARCHAR, NVARCHAR)
            }
            else if (dataType == typeof(DateTime))
            {
                // Do for DateTime (DATETIME)
            }
            else if (dataType == typeof(byte[]))
            {
                // Do for Binary (BINARY, VARBINARY, NVARBINARY, IMAGE)
            }
        }
    }
另一答案

你可以尝试这样:

System.Type myType = reader.GetFieldType(value);
switch (myType.GetTypeCode(myType))
{
    case TypeCode.String:
        break;
    // and so on ........
}

以上是关于在C#中检查SQL列的类型的主要内容,如果未能解决你的问题,请参考以下文章

Java如何获取ResultSet结果中的每一列的数据类型

spark关于join后有重复列的问题(org.apache.spark.sql.AnalysisException: Reference '*' is ambiguous)(代码片段

检查列数据类型并仅对 Spark SQL 中的整数和小数执行 SQL

更改 SQL 列的数据类型时更新 SSIS 包

更改 SQL Server DB 中列的数据类型时出错 - Java

如何在循环中读取数据框列值并检查每列的数据类型