ExecuteNonQuery /ExecuteReader/ ExecuteScalar

 

1.三者之间的区别:

ExecuteNonQuery/ExecuteReader/ExecuteScalar

command的命令的三个区别:

ExecuteNonQuery:返回所影响的行数,select影响的行数为0,不返回任何数据。

ExecuteReader:与查询语句一起使用,返回一个数据阅读对象datareader

ExecuteScalar:返回查询的第一行的第一列数据

 

2.dataset和datareader之间的联系:

二者都是需要是SQL语句想联系。中间需要适配器datadapter或者SQL的直接执行相互联系

 

dataset是数据的一次性填充

dataadapter.selectcommand=cmd   (适配器和SQL)

da.fill(dataset)   (适配器填充dataset)

datasource=ds (数据源是dataset)

 

datareader是数据一条填充,是流动的dataset

datareader=cmd.executenonquery()  (datareader和SQL)

datasource=dr  (数据源是datareader)

 

优缺点:

DataReader
优点:读取数据速度快
缺点:只能向前读取数据,直到需要读取的数据都读取完了才能断开连接
适用情况:对返回的数据不多,且只做少量的处理时建议使用

DataSet
优点:连接一次即可读取所有数据,可立即关闭连接,节省时间
缺点:占用内在较多
适用情况:读取大量数据,或需要对数据做大量处理时建议使用

 

3.datatable

DataTable datatable = new DataTable();

动态添加表的数据列
                for (int i = 0; i < dataReader.FieldCount; i++)
                {
                    DataColumn myDataColumn = new DataColumn();      列是:datacolumn =new datacolumn()
                    myDataColumn.DataType = dataReader.GetFieldType(i);
                    myDataColumn.ColumnName = dataReader.GetName(i);
                    datatable.Columns.Add(myDataColumn);
                }

添加表的数据
                while (dataReader.Read())
                {
                    DataRow myDataRow = datatable.NewRow();     列和行的不同之处:datarow=datable.newrow()
                    for (int i = 0; i < dataReader.FieldCount; i++)
                    {
                        myDataRow[i] = dataReader[i].ToString();
                    }
                    datatable.Rows.Add(myDataRow);
                    myDataRow = null;
                }

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值