ExecuteNonQuery ExecuteReader ExecuteScalar

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

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章