如何从DataReader中获得DataRow

这个需求的关键是:

              所要获取的DataRow对象的结构要和真实的数据库结构相同

             总体上分为俩个大方法:

     1———使用DataSet或者是DataTable自身的Load方法   和   DataAdapter的fill方法来获得

              在内存中创建完整的数据库模型,可以使用DataAdapter对象来创建。首先建立一个临时的空数据库,然后使用数据适配器对象中的fill方法进行数据填充,这样就获得了数据库的完整的实际结构。内存中的模型填充也可以使用DataTable和DataSet自带的load方法。Load(DataReader,相关的属性枚举参数)

               做完了这些之后就可以通过相应的数据库表和行之间的属性关系来得到DataRow对象了

pDataRow = pDataSet.Tables[0].Rows[0];

  

    2———使用DataReader对象自带的GetValues方法,

                  这个方法的核心是:将数据库中的一行数据以数组的形式存储在外部声明的一个数组中,然后把数组赋值个DataRow中的ItemArray属性。

                 但是这个方法的麻烦之处在于:DataRow对象的声明方式是受到保护的,无法直接声明。这个是因为在数据库中,这个对象是最基本的元素,在不知道数据库的整体结构的情况下是无法创建的。因此要是想创建这个对象首先要有DataSet,然后才可以生成这个对象。因此这就又回到了方法1。

               只不过这个方法的存储介质变成了数组。

                        if(SqlDataReader.Read())
                        {
                            object[] values = new object[SqlDataReader.FieldCount];
                            Array.Clear(values, 0, SqlDataReader.FieldCount);

                            SqlDataReader.GetValues(values);
                            DataRow.ItemArray = values;
                        }

     但是个人觉得在使用数据适配器时,需要编写sql语句用来选择相应的表,并且还要建立数据库连接对象。感觉很麻烦,欢迎了解的朋友指正应该如何做事最好的做法

转载于:https://www.cnblogs.com/ylxd/p/8302352.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值