ADO.NET提供了多種對象模型,比較典型的以下有五種,它們?nèi)繗w類在System.Data.SqlClient名稱空間下。
一、SqlConnection對象
ADO.NET使用SqlConnection對象與SQL Server進行連接。連接字符串的常用形式有兩種:
1.使用Windows集成安全身份認證,例如:string connectionString ="IntegratedSecurity=SSPI;Database=MyDatabase.mdf;Server=localhost;";
或:string connectionString = "Initial Catalog= MyDataBase; Data Source=localhost;Integrated Security=SSPI;"
2.在連接字符串中指定服務器名、用戶id、用戶口令、數(shù)據(jù)庫名等信息。例如:string connectionString = "server=localhost; uid=sa; pwd=123; database=MyDatabase.mdf";
然后通過連接字符串直接創(chuàng)建SqlConnection對象,如SqlConnection conn = new SqlConnection(connectionString);
二、SqlCommand對象
在ADO.NET中,有兩種操作數(shù)據(jù)庫的方式:
1.無連接的方式;
2.保持連接的方式。
不論采用哪種方式,都可以通過SqlCommand對象提供的方法傳遞對數(shù)據(jù)庫操作的命令,并返回命令執(zhí)行的結(jié)果。
在保持連接的方式下操作數(shù)據(jù)庫的一般步驟為:
1.創(chuàng)建SqlConnection的實例;
2.創(chuàng)建SqlCommand的實例;
3.打開連接;
4.執(zhí)行命令;
5.關閉連接。
SqlCommand對象提供了多種完成對數(shù)據(jù)庫操作的方法。常用有:
1.ExecuteNonQuery
該方法執(zhí)行SQL語句的結(jié)果,但不返回命令執(zhí)行的表數(shù)據(jù),僅返回操作所影響的行數(shù)。
2.ExecuteReader
ExecuteReader方法提供了只向前的、順序的快速讀取數(shù)據(jù)庫中數(shù)據(jù)的方法。該方法根據(jù)提供的SELECT語句,返回一個可以順序讀取的SqlDataReader對象,編程者可以使用Read方法循環(huán)依次讀取每個記錄中各字段(列)的內(nèi)容。
3.ExecuteScaler()
該方法用于執(zhí)行SELECT查詢,得到的返回結(jié)果為一個值的情況,比如使用count函數(shù)求表中記錄個數(shù)或者使用sum函數(shù)求和等。
三、SqlDataAdapter對象
SqlDataAdapter對象通過無連接的方式完成數(shù)據(jù)庫和本地DataSet之間的交互。使用這種方式操作數(shù)據(jù)庫的一般步驟為:
1.創(chuàng)建SqlConnection的實例;
2.創(chuàng)建SqlDataAdapter的實例,需要的話,根據(jù)select語句生成其他SQL語句;
3.創(chuàng)建DataSet的實例;
4.使用Fill方法將數(shù)據(jù)庫中的表填充到DataSet的表中;
5.利用DataGridView或者其他控件對象編輯或顯示數(shù)據(jù);
6.需要的話,使用Update方法更新數(shù)據(jù)庫。
SqlDataAdapter對象通過SelectCommand、InsertCommand、UpdateCommand和DeleteCommand屬性為后臺數(shù)據(jù)庫提供對應的操作命令,并傳遞需要的參數(shù)。一般情況下,只需要提供SELECT語句和連接字符串創(chuàng)建SqlDataAdapter對象,然后利用SqlCommandBuilder對象生成InsertCommand、UpdateCommand和DeleteCommand屬性。
四、DataTable對象
ADO.NET可以在與數(shù)據(jù)庫斷開連接的方式下通過DataSet或DataTable對象進行數(shù)據(jù)處理,當需要更新數(shù)據(jù)時才重新與數(shù)據(jù)源進行連接,并更新數(shù)據(jù)源。DataTable對象表示保存在本機內(nèi)存中的表,它提供了對表中行列數(shù)據(jù)對象的各種操作。可以直接將數(shù)據(jù)從數(shù)據(jù)庫填充到DataTable對象中,也可以將DataTable對象添加到現(xiàn)有的DataSet對象中。在斷開連接的方式下,DataSet對象提供了和關系數(shù)據(jù)庫一樣的關系數(shù)據(jù)模型,代碼中可以直接訪問DataSet對象中的DataTable對象,也可以添加、刪除DataTable對象。