一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - ASP.NET教程 - ADO.NET中的五個主要對象的詳細介紹與應用

ADO.NET中的五個主要對象的詳細介紹與應用

2019-10-14 13:04asp.net教程網 ASP.NET教程

ADO.NET中的五個主要對象:Connection、Command、DataAdapter DataSet、DataReader詳細介紹與應用,感興趣的朋友可以參考下

首先看一個例子 
配置文件 

復制代碼代碼如下:


<configuration> 
<connectionStrings> 
<add name=connStr" connectionString="Data Source=.\SQLEXPRESS;AttachDBFilename=|DataDirectory|\SS.mdf;Integrated Security=true;User Instance=True"/> 
</connectionStrings> 
</configuration> 


代碼 

復制代碼代碼如下:


string strconn = ConfigurationManager.ConnectionStrings["connStr"].ConnectionString; //從配置文件中讀取連接字符串 
using (SqlConnection conn = new SqlConnection(strconn)) //創建連接對象,出了using范圍,連接自動關閉,對象自動銷毀 

conn.Open();//打開連接 
using (SqlCommand cmd = conn.CreateCommand()) //創建命令對象 

cmd.CommandText = "select * from T_Persons";//命令內容 
DataSet dataset = new DataSet(); //創建一個數據集,相當于一個數據容器 
SqlDataAdapter adapter = new SqlDataAdapter(cmd); //創建一個適配器 
adapter.Fill(dataset); //將查詢結果填充到數據集中 
DataTable datatable = dataset.Tables[0]; //將查詢到的一張表保存在DataTable對象中 
for (int i = 0; i < datatable.Rows.Count;i++ )//遍歷 

DataRow row = datatable.Rows[i];//取得一行對象 
string name=row["F_Name"].ToString();//取得該行對應列的值 
MessageBox.Show(name); 



對象解析 

復制代碼代碼如下:


Connection: 
和數據庫交互,必須連接它。連接幫助指明數據庫服務器、數據庫名字、用戶名、密碼,和連接數據庫所需要的其它參數。Connection對象會被Command對象使用,這樣就能夠知道是在哪個數據源上面執行命令。 
Command: 
主要可以用來對數據庫發出一些指令,例如可以對數據庫下達查詢、新增、修改、刪除數據等指令,以及呼叫存在數據庫中的預存程序等。這個對象是架構在Connection 對象上,也就是Command 對象是透過連結到數據源。 
DataAdapter: 
主要是在數據源以及DataSet 之間執行數據傳輸的工作,它可以透過Command 對象下達命令后,并將取得的數據放入DataSet 對象中。這個對象是架構在Command對象上,并提供了許多配合DataSet 使用的功能。 
DataSet: 
這個對象可以視為一個暫存區(Cache),可以把從數據庫中所查詢到的數據保留起來,甚至可以將整個數據庫顯示出來。DataSet 的能力不只是可以儲存多個Table 而已,還可以透過DataAdapter對象取得一些例如主鍵等的數據表結構,并可以記錄數據表間的關聯。DataSet 對象可以說是ADO.NET 中重量級的對象,這個對象架構在DataAdapter對象上,本身不具備和數據源溝通的能力;也就是說我們是將DataAdapter對象當做DataSet 對象以及數據源間傳輸數據的橋梁。 
DataReader: 
當我們只需要循序的讀取數據而不需要其它操作時,可以使用DataReader 對象。DataReader對象只是一次一筆向下循序的讀取數據源中的數據,而且這些數據是只讀的,并不允許作其它的操作。因為DataReader 在讀取數據的時候限制了每次只讀取一筆,而且只能只讀,所以使用起來不但節省資源而且效率很好。使用DataReader 對象除了效率較好之外,因為不用把數據全部傳回,故可以降低網絡的負載。ADO.NET 使用Connection 對象來連接數據庫,使用Command 或DataAdapter對象來執行SQL語句,并將執行的結果返回給DataReader 或 DataAdapter ,然后再使用取得的DataReader 或DataAdapter 對象操作數據結果。 


強類型 DataSet(ADO.NET中的重頭戲) 
使用方法:在項目上右擊-添加-新建項-數據集,然后將表從服務器資源管理器拖放到DataSet中。注意拖放過程是自動根據表結構生成強類型DataSet等類,沒有把數據托過來,程序還是連得那個數據庫,自動將數據庫連接字符串寫在了配置文件中。

定義表的時候必須要有主鍵(表名:T_Persons) 

復制代碼代碼如下:


T_PersonsTableAdapter adapter = new T_PersonsTableAdapter();//首先生成一個適配器 
DataSet演示.DataSet1.T_PersonsDataTable datatable = adapter.GetData();//講返回結果用T_PersonsDataTable類型接收 
for (int i = 0; i < datatable.Count;i++ )//遍歷表中的每一行 

DataSet演示.DataSet1.T_PersonsRow row = datatable[i];//每一行放入一個T_PersonsRow中 
MessageBox.Show("姓名是:"+row.F_Name+"年齡是:"+row.F_Age);//取出數據(像使用屬性一樣) 


強類型DataSet的更新 

復制代碼代碼如下:


T_PersonsTableAdapter adapter = new T_PersonsTableAdapter(); 
DataSet演示.DataSet1.T_PersonsDataTable datatable = adapter.GetData();//取出查詢結果放入表中 
DataSet演示.DataSet1.T_PersonsRow row = datatable[0];//取表的第一行 
row.F_Name = "newName";//修改第一行數據的名字字段 
int i = adapter.Update(datatable); 
if (i > 0) 

MessageBox.Show("修改成功"); 

else 

MessageBox.Show("修改失敗"); 


數據庫中的表未增加字段:右鍵數據集→配置 
增加字段:右鍵數據集→配置→查詢分析器 
插入新行: 

復制代碼代碼如下:


T_PersonsTableAdapter adapter = new T_PersonsTableAdapter(); 
int i = adapter.Insert("吉思靜", 22); 
if (i > 0) 

MessageBox.Show("插入成功"); 

else 

MessageBox.Show("插入失敗"); 


空值處理 

復制代碼代碼如下:


if(row.IsF_NameNull())//判斷數據庫中的該字段對應的值是否為空(這是一個方法,直接調用) 

MessageBox.Show("數據為空"); 


強類型DataSet添加自定義SQL語句 

復制代碼代碼如下:


右鍵數據集→添加→Query 
查詢SQL語句 
SELECT * FROM dbo.T_Persons 
where F_Age>20 
調用該方法: 
T_PersonsTableAdapter adapter = new T_PersonsTableAdapter(); 
DataSet演示.DataSet1.T_PersonsDataTable datatable = adapter.GetDataOlder(); 
查詢SQL語句(帶參數) 
SELECT * FROM dbo.T_Persons 
where F_Age>@Age 
調用該方法: 
T_PersonsTableAdapter adapter = new T_PersonsTableAdapter(); 
DataSet演示.DataSet1.T_PersonsDataTable datatable = adapter.GetDataByAge(20); 
刪除SQL語句(帶參數) 
DELETE FROM T_Persons 
WHERE (F_Name = @Name) 
調用該方法: 
T_PersonsTableAdapter adapter = new T_PersonsTableAdapter(); 
int i = adapter.DeleteByName("李正興");//成功刪除返回1否則返回0 


優化強類型DataSet批量處理 
(1)插入3000條數據未優化用時 

復制代碼代碼如下:


Stopwatch sw = new Stopwatch(); 
sw.Start();//打開時鐘 
T_testTableAdapter adapter = new T_testTableAdapter(); 
for(int i=0;i<3000;i++)//計算插入3000條數據的用時 

adapter.Insert(i.ToString(), i); 

sw.Stop(); 
MessageBox.Show(sw.Elapsed.ToString()); 


(2)插入3000條數據優化后用時 

復制代碼代碼如下:


Stopwatch sw = new Stopwatch(); 
sw.Start();//打開時鐘 
T_testTableAdapter adapter = new T_testTableAdapter(); 
adapter.Connection.Open();//打開連接 
for(int i=0;i<3000;i++)//計算插入3000條數據的用時 

adapter.Insert(i.ToString(), i); 

adapter.Connection.Close();//關閉連接 
sw.Stop(); 
MessageBox.Show(sw.Elapsed.ToString()); 

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 九九99香蕉在线视频免费 | 国产麻豆精品入口在线观看 | 美女的让男人桶爽30分钟的 | 亚洲第一综合网 | 无码专区aaaaaa免费视频 | 俄罗斯美女大逼 | 第一福利在线观看永久视频 | 娇妻被朋友征服中文字幕 | 久久这里只有精品无码3D | 久久精品国产欧美日韩99热 | 国产精品视频人人做人人爱 | 亚洲看片lutube在线入口 | 久久九九有精品国产23百花影院 | 91精品国产品国语在线不卡 | www毛片| 全彩孕交漫画福利啪啪吧 | 国产a一级毛片午夜剧院 | 午夜理论片YY4399影院 | 男同激情视频 | 国产精品最新资源网 | 午夜伦理电影在线观免费 | 国产成人夜色影视视频 | xxxx成人| 欧美日韩中文国产一区二区三区 | 大乳一级一区二区三区 | 99久久无色码中文字幕 | 色综合图片 | 91精品国产高清久久久久久91 | 视频一本大道香蕉久在线播放 | 亚洲精品一区二区三区中文字幕 | 亚洲sss视频 | 久久综合中文字幕佐佐木希 | 国产精品久久久久久五月尺 | 亚洲 欧美 清纯 校园 另类 | 母性本能在线观看 | 色女的乖男人 | 我和岳偷长篇小说 | 亚洲男人精品 | 久久这里只有精品视频e | 精品日韩二区三区精品视频 | 蜜桃破解版免费看nba |