最近閑暇時間寫的一些小程序中,訪問數據庫比較多;下面主要介紹下ADO.NET方面知識,有不足之處,希望大神們不吝賜教:
提到ADO.NET,經常會和ASP.NET進行混淆,兩者的區別很大,沒有可比性,下面講下兩者之前的區別:
- ASP.NET是微軟在.net Framework提供的,用於開發web應用程序的類庫,封裝在System.Web.dll中,對應程序中是System.Web這個命名空間。
- ADO.NET 對 Microsoft SQL Server 和 XML 等數據源以及通過 OLE DB 和 XML 公開的數據源提供一致的訪問。ADO.NET 類在 System.Data.dll 中,並且與 System.Xml.dll 中的 XML 類集成。
簡單的來講ADO.NET是用來處理數據庫的一種訪問方式。
下面介紹下ADO.NET的五個常用對象
- Connection 類
和數據庫交互,必須連接它。連接幫助指明數據庫服務器、數據庫名字、用戶名、密碼,和連接數據庫所需要的其它參數。Connection對象會被Command對象使用,這樣就能夠知道是在哪個數據源上面執行命令。
與數據庫交互的過程意味着必須指明想要執行的操作。這是依靠Command對象執行的。開發人員使用Command對象來發送SQL語句給數據庫。Command對象使用Connection對象來指出與哪個數據源進行連接。開發人員能夠單獨使用Command對象來直接執行命令,或者將一個Command對象的引用傳遞給DataAdapter,它保存了一組能夠操作下面描述的一組數據的命令。
代碼如下:
using (SqlConnection cnn = new SqlConnection("data source=10.10.198.111;Database=systemconfig;uid=sa;password=sa")) { cnn.Open(); }
SqlConnection參數中字符串是連接數據庫地址、庫名、用戶名、密碼等信息;通常是放web.config配置文件中,當需要調用時,直接引用配置信息,代碼如下:
<!--數據庫連接地址--> <connectionStrings> <add name="connstr" connectionString="data source=10.10.198.111;Database=systemconfig;uid=sa;password=sa"/> </connectionStrings>
private static string connstr = ConfigurationManager.ConnectionStrings["connstr"].ConnectionString;
Connection 訪問數據庫字符串,格式如下:
--access連接格式 Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Directory.GetCurrentDirectory() + (@"\Areafull.accdb
- Command對象
成功與數據建立連接后,就可以用Command對象來執行查詢、修改、插入、刪除等命令;Command對象常用的方法有ExecuteReader()方法、ExecuteScalar()方法和ExecuteNonQuery()方法;插入數據可用ExecuteNonQuery()方法來執行插入命令;
代碼如下:
using (SqlConnection cnn = new SqlConnection(connstr)) { cnn.Open(); using (SqlCommand cmd = cnn.CreateCommand()) { cmd.CommandText = sql;//執行sql語句 cmd.Parameters.AddRange(parameters);//sql參數 } }
- DataAdapter類
某些時候開發人員使用的數據主要是只讀的,並且開發人員很少需要將其改變至底層的數據源。同樣一些情況要求在內存中緩存數據,以此來減少並不改變的數據被數據庫調用的次數。DataAdapter通過斷開模型來幫助開發人員方便的完成對以上情況的處理。當在一單批次的對數據庫的讀寫操作的持續的改變返回至數據庫的時候,DataAdapter 填充(fill)DataSet對象。DataAadapter包含對連接對象以及當對數據庫進行讀取或者寫入的時候自動的打開或者關閉連接的引用。另外,DataAdapter包含對數據的SELECT、INSERT、UPDATE和DELETE操作的Command對象引用。開發人員將為DataSet中的每一個Table都定義DataAadapter,它將為開發人員照顧所有與數據庫的連接。所以開發人員將做的工作是告訴DataAdapter什么時候裝載或者寫入到數據庫。
代碼如下:
using (SqlConnection cnn = new SqlConnection(connstr)) { cnn.Open(); using (SqlCommand cmd = cnn.CreateCommand()) { cmd.CommandText = sql; cmd.Parameters.AddRange(parameters); SqlDataAdapter apter = new SqlDataAdapter(cmd); DataSet ds = new DataSet(); apter.Fill(ds); return ds.Tables[0]; } }
- DataSet對象
DataSet對象是數據在內存中的表示形式。它包括多個DataTable對象,而DataTable包含列和行,就象一個普通的數據庫中的表。開發人員甚至能夠定義表之間的關系來創建主從關系(parent-child relationships)。DataSet是在特定的場景下使用――幫助管理內存中的數據並支持對數據的斷開操作的。DataSet是被所有Data Providers使用的對象,因此它並不像Data Provider一樣需要特別的前綴。
- DataTable類
DataTable 是一個臨時保存數據的網格虛擬表(表示內存中數據的一個表。)。DataTable是ADO dot net 庫中的核心對象。