ExecuteNonQuery ExecuteReader ExecuteScalar

来源:互联网 发布:石泽研究所面膜 知乎 编辑:程序博客网 时间:2024/06/04 17:43

1.三者之间的区别:

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;
                }

 

 

原创粉丝点击