C# 返回的数据类型因表中的数据而异

C# 返回的数据类型因表中的数据而异,c#,.net,sql-server,ado.net,C#,.net,Sql Server,Ado.net,我有一个表,有两列-[security\u role\u name]和security\u role\u cd。security_role_cd的数据类型是security_role表中的smallint 我有以下数据选择逻辑。返回的数据类型因数据场景而异:- 表中没有数据 表中有一条记录 问题 为什么在这些场景中数据类型会发生变化 如何纠正 注意:目前我正在使用try..catch来满足这种情况 代码 参考: 您可以查看reader.GetFieldType(0)。例如: int i

我有一个表,有两列-[security\u role\u name]和security\u role\u cd。security_role_cd的数据类型是security_role表中的smallint

我有以下数据选择逻辑。返回的数据类型因数据场景而异:-

  • 表中没有数据
  • 表中有一条记录
  • 问题

  • 为什么在这些场景中数据类型会发生变化
  • 如何纠正
  • 注意:目前我正在使用
    try..catch
    来满足这种情况

    代码

    参考:


  • 您可以查看
    reader.GetFieldType(0)
    。例如:

        int i;
        switch (Type.GetTypeCode(reader.GetFieldType(0)))
        {
            case TypeCode.Int16: i = reader.GetInt16(0); break;
            case TypeCode.Int32: i = reader.GetInt32(0); break;
            // TODO: any other cases you need to handle
            default: throw new NotSupportedException();
        }
    
    或者更简单:

        int i = Convert.ToInt32(reader.GetValue(0));
    

    谢谢以下内容也值得使用吗?SqlDbType type=(SqlDbType)(int)reader.GetSchemaTable().Rows[0][“ProviderType”]@Lijo这会增加很多开销。。。读者已经知道了类型。。。我想,只要问问读者这是什么类型的。
        int i = Convert.ToInt32(reader.GetValue(0));