C# 判断 SqlDataReader 实例是否包含查询数据库表的列

C# 判断 SqlDataReader 实例是否包含查询数据库表的列。


在写数据库操作类方法时,假如需要把SqlDataReader 的实例,填充到实体中。

而次查询数据表的列又不是固定的,所以在填充前需要判断 SqlDataReader 的实例 是否包含有列,

才可以适应查询列数不固定,也可以动态的填充,

提高程序的重用性。


   
   
        /// <summary>
        /// 检查 SqlDataReader 实例中是否包含数据表的列
        /// </summary>
        /// <param name="columnName">实例中是否包含数据表的列</param>
        public bool CheckColumnName(SqlDataReader reader, string columnName)
        {
            bool result = false;
            DataTable dt = reader.GetSchemaTable();
            foreach (DataRow dr in dt.Rows)
            {
                if (dr["ColumnName"].ToString() == columnName)
                {
                    result = true;
                }
            }

            return result; //result 为 true则 列名存在
        }

        public void Test()
        {
            using (SqlConnection conn = new SqlConnection("server=.;database=MyTest;uid=sa;pwd=justdoit"))
            {
                conn.Open();
                string sql = "SELECT * FROM [User]";
                SqlCommand cmd = new SqlCommand(sql, conn);
                SqlDataReader reader = cmd.ExecuteReader();
                while (reader.Read())
                {
                    if (CheckColumnName(reader, "UserName"))
                    {
                        //此处自定义代码
                    }

                }
                
            }
        }


SqlDataReader的
GetSchemaTable()
方法会返回一个DataTable,里面是SqlDataReader 实例里查询数据库表返回结果集,列的集合。

利用它就可以判断一个SqlDataReader是否包含数据库表的列了。


DataTable 的话可以用 dt.Columns.Contains(string name) 方法判断。




 



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值