占梅
(廈門南洋職業學院 福建省廈門市 361102)
ADO.SQL Server 是一個關系數據庫管理系統,它可以使用SQL 語句對數據庫執行各種操作,例如更新,搜索,刪除,插入數據等。接下來,我們將使用ADO.asp.net 技術進步通過net 編程了解ADO.NET 體系結構,對象,方法和屬性,ADO.SQL Server 有兩種訪問數據庫的方法。
ADO.Net 是用于處理數據的類庫。它提供了一致的對象模型,可以訪問和編輯來自各種數據源的數據,并提供了一種一致的方式來處理來自這些數據源的數據。開發應用程序時使用ADO.NET 網絡數據訪問技術將在應用程序窗口或頁面中可視化地建立應用程序窗口與數據庫之間的信息通信橋梁,并實現信息訪問,添加,刪除,更改和查看的交互操作。ADO.NET 有兩種數據庫訪問模式。一種是連接模式,它可以保持數據庫連接并在斷開數據庫連接之前執行指定的SQL 語句以操作數據。在斷開連接模式下,將數據庫中的數據讀取到服務器的數據集或數據表中,并在斷開連接后操作數據。
如圖1 所示。
連接對象可用于實現應用程序與數據庫之間的連接,并且不同的數據源對應于不同的連接對象。連接對象的公共屬性是connectionstring 屬性,該屬性用于保存連接對象的數據庫連接字符串,獲取或設置數據庫連接字符串,以及state 屬性以顯示當前狀態。打開和關閉連接對象。連接對象的常見方法是open()方法(用于打開數據庫連接)和close()方法(用于關閉數據庫連接)。
與數據源連接后,可以使用命令對象在數據源上進行查詢,添加,刪除,修改和其他操作。該操作方法可以通過SQL 語句或存儲過程來實現。連接對象所使用的連接對象是命令對象(獲取和設置命令對象)的公共屬性的連接屬性的名稱,命令文本屬性的名稱(對數據執行的獲取和設置SQL 語句或存儲過程)和命令類型的屬性( get 和set 命令要執行的命令類型對。命令對象的常見方法有:executequery()方法(執行commandtext 屬性指定的內容并返回受影響的行數),executereader()方法(執行commandtext 屬性指定的內容并創建datareader 對象),以及executescalar()方法(執行查詢并針對第一行第一列中返回的結果集返回查詢)。
當命令對象返回結果集時,需要datareader 對象來檢索數據。datareader 對象返回命令中的只讀,僅轉發數據流。datareader 對象的常見屬性是:fieldcount 屬性(指示從datareader 檢索到的數據行中的字段數),hasrows 屬性(指示datareader 是否包含數據)和isclosed 屬性(指示datareader 對象的isclosed 屬性)。datareader對象的常見方法有:()方法讀取(返回第一個SqlDataReader 并依次讀取值),getname()方法(通過輸入列索引的名稱獲取列),getdatatypenname()方法(通過以下方式獲取列)輸入列的類型索引)和getValue()方法(通過輸入列的索引獲取列)。返回當前記錄行中指定列的值,close()方法(關閉數據讀取器對象)和isull()方法(確定具有指定索引號的列為null 并返回true 或false 的列)。
DataAdapter(或DataAdapter)對象是充當數據集對象和實際數據源之間的橋梁的對象。數據集對象是獨立于數據源的斷開連接的對象。DataAdapter 填充數據并將其數據提交到特定的數據源。它與數據集一起用于添加,查詢,修改,刪除和其他操作。通用屬性的數據適配器對象包括selectcommand 屬性(或一組用于選擇數據源記錄的語句或存儲過程),UpdateCommand 屬性(或一組用于更新數據源的語句或存儲過程)記錄),insertcommand 屬性(獲取和設置語句或存儲過程以在數據源中插入新記錄)和delete命令屬性(獲取或設置語句或存儲過程從數據源中刪除記錄)。DataAdapter 對象的常見方法是fill()方法和update()方法,該方法用從源數據讀取的行填充數據集對象。如果數據集對象中的數據發生更改,它將更新數據源。
可以將數據集視為數據容器或“內存中的數據庫”。從數據源獲取數據時,將數據集與數據源斷開連接。您可以在數據集中添加,刪除,查詢,計數和其他記錄,并且在每次操作之后,可以將數據集中的數據發送回數據源。每個數據集都是一個或多個數據表對象的集合。DataTable 等效于數據庫中的表。數據集對象的公共屬性表:獲取數據集中包含的表的集合。您可以通過索引數據集名稱來引用表集合中的表:獲取或設置當前數據集的名稱。Clear()方法:刪除數據集對象中的所有表。Copy()方法:將一個數據集對象的結構和數據復制到另一個DataSet 對象中。

圖1:ADO.NET 的五大對象關系圖
3.1.1 連接模式訪問數據庫的步驟
(1)創建連接對象并與數據庫建立連接;
(2)創建命令對象以在數據庫上執行SQL 命令或存儲過程,包括添加,刪除,修改和查詢數據庫;
(3)打開與數據庫的連接;
(4)執行命令以操作數據庫。如果查詢數據庫數據,請創建一個datareader 對象以讀取命令查詢的結果集,并將結果集綁定到控件。
(5)關閉數據庫連接。
3.1.2 操作數據庫的兩種方法
(1)ExecuteReader()方法。executerreader()方法根據提供的select 語句返回datareader 對象,這提供了順序讀取數據庫的方法。開發人員可以使用datareader 對象的read 方法遍歷每個記錄中每個字段的內容。
(2)ExecuteNonQuery() 方法。ExecuteNonQuery()方法執行SQL 語句并返回受操作影響的行數。通常,數據庫中的表數據直接由update,insert,delete 或select 語句操作。executenonquery()方法返回受update,insert 和delete 語句命令影響的行數。對于select 語句,由于執行select 語句以來數據庫沒有更改,因此返回值為-1。
3.1.3 連接模式案例
string connStr=ConfigurationManager.ConnectionStrings["Mycon nectionstring"].ConnectionString;
SqlConnection conn=new SqlConnection(connStr);//建立連接對象
conn.Open();//打開連接
SqlCommand cmd=new SqlCommand();//建立命令對象
cmd.Connection=conn;
cmd.CommandText="Select *from UserDetails where username=nameStr";
SqlDataReader reader=null;
reader.Close();
conn.Close();//關閉連接
數據集對象包含多個數據表對象,這些數據表對象存儲與數據源斷開連接的數據。DataAdapter 對象充當數據庫和內存之間的橋梁。DataAdapter 對象的fill 方法用于將查詢結果填充到數據表中。然后,使用DataAdapter 對象的fill 方法將查詢結果填充到數據表中,關閉連接,并保持連接斷開連接。
3.2.1 使用斷開模式查詢數據的步驟
(1)創建連接對象并與數據庫建立連接;
(2)創建DataAdapter 對象并設置select 語句;
(3)創建數據集對象或數據表對象;
(4)用DataAdapter 的填充方法填充數據集;
(5)使用數據控件顯示數據。
3.2.2 使用斷開模式編輯數據的步驟
(1)創建連接對象并與數據庫建立連接;
(2)創建DataAdapter 對象并設置select 語句;
(3)創建一個commandbuilder 對象;
(4)創建數據集對象或數據表對象;
(5)用DataAdapter 的填充方法填充數據集;
(6)使用數據控件來插入,更新或刪除數據;
(7)調用DataAdapter 對象的update 方法來更新數據庫。
3.2.3 斷開模式案例
string connStr=ConfigurationManager.ConnectionStrings["Mycon nectionString"].ConnectionString;
SqlConnection conn=new SqlConnection(connStr);
SqlDataAdapter adapter=new SqlDataAdapter("select *from UserDetails",conn);//建立數據適配器對象
SqlCommandBuilder cmd=new SqlCommandBuilder(adapter);
DataSet ds=new DataSet();//創建數據集
adapter.Fill(ds,"User");//填充數據集的數據表User
DataTable userTable=ds.Table["User"];
DataRow row=usertable.NewRow();
row["UserName"]=nameStr;
row["Pwd"]=pwdStr;
userTable.Rows.Add(row);
adapter.Update(ds.Tables["User"]);//更新數據
連接模式在讀取數據的過程中連接到數據庫,直到程序結束。該方法具有良好的實時性能。但是,獨占數據庫連接是獨占的。在數據量較少的情況下,如果選擇只讀優先級,則連接模式的執行效率仍然是可能的。從數據源獲取數據后,斷開連接模式將斷開數據源的連接。所有數據操作均針對本地數據緩存中的數據。當您需要從數據源獲取新數據或返回已處理的數據時,客戶端將連接到數據源以完成相應的操作。此方法不會壟斷數據庫連接,但它不是實時的。斷開連接模式適用于大量數據以及需要修改和更新數據庫的情況。
因為ADO.NET 提供了一種在.NET 環境中訪問數據技術的通用解決方案。ASP.NET 更容易以連接模式或斷開模式連接和訪問數據庫,因此您可以通過它來控制遠程服務器上的數據庫。