ADO.NET提供了多種對象模型,比較典型的以下有五種,它們全部歸類在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、用戶口令、數據庫名等信息。例如:string connectionString = "server=localhost; uid=sa; pwd=123; database=MyDatabase.mdf";
然後通過連接字符串直接創建SqlConnection對象,如SqlConnection conn = new SqlConnection(connectionString);
二、SqlCommand對象
在ADO.NET中,有兩種操作數據庫的方式:
1.無連接的方式;
2.保持連接的方式。
不論采用哪種方式,都可以通過SqlCommand對象提供的方法傳遞對數據庫操作的命令,並返回命令執行的結果。
在保持連接的方式下操作數據庫的一般步驟為:
1.創建SqlConnection的實例;
2.創建SqlCommand的實例;
3.打開連接;
4.執行命令;
5.關閉連接。
SqlCommand對象提供了多種完成對數據庫操作的方法。常用有:
1.ExecuteNonQuery
該方法執行SQL語句的結果,但不返回命令執行的表數據,僅返回操作所影響的行數。
2.ExecuteReader
ExecuteReader方法提供了只向前的、順序的快速讀取數據庫中數據的方法。該方法根據提供的SELECT語句,返回一個可以順序讀取的SqlDataReader對象,編程者可以使用Read方法循環依次讀取每個記錄中各字段(列)的內容。
3.ExecuteScaler()
該方法用於執行SELECT查詢,得到的返回結果為一個值的情況,比如使用count函數求表中記錄個數或者使用sum函數求和等。
三、SqlDataAdapter對象
SqlDataAdapter對象通過無連接的方式完成數據庫和本地DataSet之間的交互。使用這種方式操作數據庫的一般步驟為:
1.創建SqlConnection的實例;
2.創建SqlDataAdapter的實例,需要的話,根據select語句生成其他SQL語句;
3.創建DataSet的實例;
4.使用Fill方法將數據庫中的表填充到DataSet的表中;
5.利用DataGridView或者其他控件對象編輯或顯示數據;
6.需要的話,使用Update方法更新數據庫。
SqlDataAdapter對象通過SelectCommand、InsertCommand、UpdateCommand和DeleteCommand屬性為後台數據庫提供對應的操作命令,並傳遞需要的參數。一般情況下,只需要提供SELECT語句和連接字符串創建SqlDataAdapter對象,然後利用SqlCommandBuilder對象生成InsertCommand、UpdateCommand和DeleteCommand屬性。
四、DataTable對象
ADO.NET可以在與數據庫斷開連接的方式下通過DataSet或DataTable對象進行數據處理,當需要更新數據時才重新與數據源進行連接,並更新數據源。DataTable對象表示保存在本機內存中的表,它提供了對表中行列數據對象的各種操作。可以直接將數據從數據庫填充到DataTable對象中,也可以將DataTable對象添加到現有的DataSet對象中。在斷開連接的方式下,DataSet對象提供了和關系數據庫一樣的關系數據模型,代碼中可以直接訪問DataSet對象中的DataTable對象,也可以添加、刪除DataTable對象。
1. 創建DataTable對象
可以通過以下兩種方式創建DataTable對象:
1) 通過DataTable類的構造函數創建DataTable對象,例如:
DataTable table = new DataTable();
2) 通過DataSet的Tables對象的Add方法創建DataTable對象,例如:
DataSet dataset = new DataSet();
DataTable table = dataset.Tables.Add("MyTableName");
2. 在DataTable對象中添加列
在DataTable對象中添加列的最常用的方法是通過DataTable對象的Column屬性中的Add方法。添加後的每一列都是一個DataColumn對象。
3. 設置DataTable對象的主鍵
關系數據庫中的表一般都有一個主鍵,用來惟一標識表中的每一行記錄。通過DataTable對象的PrimaryKey屬性可以設置Datatable的主鍵。主鍵可以是一個或者多個DataColumn對象組成的數組。例如:
DataColumn[] key = new DataColumn[1];//dt是一個DataTable對象
key[0] = dt.Columns[0];
dt.PrimaryKey = key;
4. 在DataTable對象中創建行
DataTable對象的每一行都是一個DataRow對象,所以創建行時可以先利用DataTable對象的NewRow方法創建一個DataRow對象,並設置新行中各列的數據,然後利用Add方法將DataRow對象添加到表中
5. 將SQL Server數據庫中的表填充到DataTable中
除了可以直接創建DataTable對象的行列信息外,也可以通過DateAdapter對象的Fill方法將SQL Server數據庫中的表填充到DataTable對象中。
五、DataSet對象
1. 創建DataSet對象
使用創建的DataSet對象可以完成各種數據操作,利用向導生成的數據庫數據源是一個強類型的DataSet以及一對或多對強類型的DataTable和TableAdapter的組合。類型化的DataSet是一個生成的類,是從.NET Framework的一般DataSet類衍生來的,但提供了已定義的架構以及特定於該架構的屬性和方法。同時,對於DataSet中的每個表,還生成了特定於該DataSet的附加衍生類,而且每個類都為相關的表提供了特定的架構、屬性和方法。
當然,也可以直接創建一般的DataSet對象,例如:
DataSet myDataset = new DataSet();
2. 填充DataSet對象
創建DataSet後,就可以使用SqlDataAdapter對象把數據導入到DataSet對象中,比如通過Fill方法將數據填充到DataSet中的某個表中。