【ADO.net結構】:
ADO.NET用於訪問和操作數據庫的兩個主要組件是:.NET Framework 數據提供程序和DataSet。
a、.NET Framework數據提供程序:是專門為數據操作設計的組件,用於處理不同的數據源,支持訪問特定的數據庫、執行SQL命令和檢索結果。
b、.NET Framework數據提供程序包含4個核心對象:
Connection:(連接)建立與特定數據源的連接;
Command:(命令)對數據源執行命令;
DataReader:( 數據讀取)從數據源中讀取只進<只能前進不能后退>只讀<只能讀取>的數據流;
DataAdapter:(數據適配器)使用數據源填充DataSet並解決更新。
【注意】:由於數據源不同,上面4個對象分別針對不同的數據源在.NET Framework數據提供程序中有不同的實現。
SQL Server數據庫需要使用”System.Data.SqlClient命名空間“,
核心對象分別為:SqlConnection、SqlCommand、SqlDataReader、SqlDataAdapter;
Access數據庫需要使用”System.Data.OleDb命名空間“,
核心對象分別為:OleDbConnection、OleDbCommand、OleDbDataReader、OleDbDataAdapter;
c、DataSet:專門為獨立於所有數據源的數據訪問而設計的,它在支持ADO.NET中的斷開式、分布式數據方案中起着至關重要的作用。
DataSet包含一個或多個DataTable對象的集合,這些對象由數據行、數據列以及有關DataTable對象中的數據主鍵、外鍵、約束和關系信息組成。
【操作數據庫的方法】:
1、使用Connection、Command和DataReader對象實現非斷開式訪問數據庫。
⑴、更新數據或讀取單個數據操作:
a、創建Connection對象並打開連接;
b、創建Command對象;
c、執行相應命令;
d、關閉數據庫連接。
⑵、讀取多個數據操作:
a、創建Connection對象並打開連接;
b、創建Command對象;
c、執行相應命令,獲取DataReader對象;
d、使用DataReader對象讀取數據;
e、關閉DataRrader對象;
f、關閉數據庫連接。
2、使用Connection、DataAdapter和DataSet對象實現斷開式訪問數據庫。
a、創建Connection對象、DataReader對象和DataSet對象;
b、使用DataAdapter對象將數據庫中所請求的數據填充到DataSet對象中;
c、更新DataSet對象中的數據;
d、使用DataAdapter對象將DataSet對象中的數據回傳到數據庫中。
【ADO.NET中的核心對象】:Conneciton對象、Command對象和DataReader對象。
a、Coneciton對象用於連接數據庫,是在應用程序和數據庫之間建立一條數據傳輸通道,只有創建並打開連接,應用程序才能操作數據庫中的數據.
b、Command對象用於執行對數據庫中的數據進行增、刪、改、查的命令。在操作的過程中,必須保持應用程序和數據庫之間的連接。
c、DataReader對象提供了一個只進只讀的數據讀取器,用於從查詢結果中讀取數據,它每次僅能讀取一行數據。
【全步驟】:
1、創建Connection對象;
【語法】:SqlConnection 連接對象名=new SqlConnection(連接字符串);
2、打開數據庫連接;
【語法】:連接對象名.Open();
3、定義需要執行的T-SQL語句;(定義String類型的字符串用於保存需要執行的T-SQL語句)
4、創建Command對象;
【語句】:SqlCommand 命令對象名=new SqlCommand("T-SQL語句",Connection對象);
5、執行命令,獲得DataReader對象;
【語句】:SqlDataReader 讀取器對象名=命令對象.command.ExecuteReader();
6、使用循環,逐行讀取數據;(Read方法具有bool類型的返回值。若能讀取到數據,則返回true,否則返回false.)
【語句】:while(讀取器對象名.Read())
{
}
7、獲取當前行中的某一列數據;(可以使用索引或列名來獲取當前的某一行數據,索引從0開始,且獲取數據時需要進行顯式類型轉換。)
【語句】:讀取器對象名[索引或列名];
8、關閉DataRead對象;(數據讀取完畢必須關閉DataReader對象,因為在讀取數據時,DataReader對象將獨占連接,此時,就無法使用當前連接對象執行其他操作。)
【語句】:讀取器對象名.Close();
9、關閉連接對象。
【語法】:連接對象名.Close();
--------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------
【實際運用是主要分兩種情況】:
1、對於Insert、Update、Delete等單向操作:
2、對於Select的雙向操作: