知識(shí)寶典之ADO.NET連接模式
隨著ADO.NET的普及使用,ADO.NET在功能上也有了很大的提升,在網(wǎng)上收集了很多資料,現(xiàn)在和大家一起分享一下。ADO.NET框架支持兩種模式的數(shù)據(jù)訪問(wèn):連接模式(Connected)和非連接模式(disconnected)。這一節(jié)介紹如何使用連接模式訪問(wèn)數(shù)據(jù)庫(kù)中的數(shù)據(jù),利用ADO.NET中的Connection,Command,DataReader來(lái)獲取和修改數(shù)據(jù)庫(kù)中的數(shù)據(jù)
ADO.NET連接模式的數(shù)據(jù)訪問(wèn)
ADO.NET連接模式的數(shù)據(jù)訪問(wèn)要使用到的三個(gè)核心類(lèi):
◆IDBConnection:表示數(shù)據(jù)源的連接,所有Connection類(lèi)的基類(lèi),SqlConnection實(shí)現(xiàn)了IDBConnection接口,用來(lái)與SQLServer數(shù)據(jù)源進(jìn)行連接
◆DBCommand:表示所有Command類(lèi)的基類(lèi),SqlCommand實(shí)現(xiàn)了IDBCommand接口,與來(lái)對(duì)SQLServer數(shù)據(jù)庫(kù)執(zhí)行的一個(gè)Transact-SQL語(yǔ)句或存儲(chǔ)過(guò)程
◆DataReader:所有DataReader類(lèi)的基類(lèi),SqlDataReader實(shí)現(xiàn)了IDataReader接口,提供一種從SQLServer數(shù)據(jù)庫(kù)讀取行的只進(jìn)流的方式。
#T#如果要連接到微軟SQLServer數(shù)據(jù)庫(kù),盡量使用SqlClient命名空間中的SqlConnection,SqlCommand,SqlDataReader類(lèi),如果與Oracle數(shù)據(jù)庫(kù)通信,應(yīng)該使用OracleClient命名空間的類(lèi);與其它數(shù)據(jù)庫(kù)進(jìn)行通信,就應(yīng)該使用OleDB或ODBC命名空間的類(lèi)。
一個(gè)簡(jiǎn)單的ADO.NET連接模式的數(shù)據(jù)訪問(wèn)例子:
- Code
- namespaceDawnDataObject
- {
- publicclassMovies//數(shù)據(jù)實(shí)體對(duì)象
- {
- publicstaticreadonlystring_connectionString;//連接數(shù)據(jù)庫(kù)字符串為靜態(tài)成員,每個(gè)實(shí)例共享。
- staticMovies(){
- _connectionString=WebConfigurationManager.ConnectionStrings["DawnEnterpriseDBConnectionString"].
- ConnectionString;
- }
- privatestring_title;
- privatestring_director;
- //Movies類(lèi)中包括的屬性有Title、Director
- publicstringTitle{
- get{return_title;}
- set{_title=value;}
- }
- publicstringDirector{
- get{return_director;}
- set{_director=value;}
- }
- //Movies類(lèi)中的GetAll方法返回一個(gè)List對(duì)象,該對(duì)象可以被GridView等控件做為數(shù)據(jù)源綁定
- publicList<Movies>GetAll()
- {
- List<Movies>result=newList<Movies>();
- SqlConnectionconn=newSqlConnection(_connectionString);
- SqlCommandcomm=newSqlCommand("selectTitle,DirectorfromMovies",conn);
- using(conn){//using關(guān)鍵字指定了conn一旦離開(kāi)這個(gè)代碼段,自動(dòng)調(diào)用其Dispose函數(shù)
- conn.Open();
- SqlDataReaderreader=comm.ExecuteReader();
- while(reader.Read()){
- Moviesnewmovie=newMovies();
- newmovie._title=(string)reader["Title"];
- newmovie._director=(string)reader["Director"];
- result.Add(newmovie);
- }
- returnresult;
- }
- }
- }

















