在C#中检查SQL列的类型

问题描述 投票:0回答:2

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

c# sql types
2个回答
3
投票
    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)
            }
        }
    }

0
投票

你可以尝试这样:

System.Type myType = reader.GetFieldType(value);
switch (myType.GetTypeCode(myType))
{
    case TypeCode.String:
        break;
    // and so on ........
}
© www.soinside.com 2019 - 2024. All rights reserved.