ADO.NET 基础学习笔记1
1. ODBC、OLEDB、ADO、ADO.NET之間的關系
ODBC: 開放數(shù)據(jù)庫互連(ODBC)是MICROSOFT提出的數(shù)據(jù)庫訪問接口標準。ODBC(Open DatabaseConnectivity,開放數(shù)據(jù)庫互連)提供了一種標準的API(應用程序編程接口)方法來訪問數(shù)據(jù)庫管理系統(tǒng)(DBMS)。
OLEDB: OLEDB(ObjectLinking and Embedding,Database,又稱為OLE DB或OLE-DB),一個基于COM的數(shù)據(jù)存儲對象,能提供對所有類型的數(shù)據(jù)的操作。
ADO: ADO (ActiveXDataObjects)是一個用于訪問數(shù)據(jù)源的COM組件。它提供了編程語言和統(tǒng)一數(shù)據(jù)訪問方式OLE DB的一個中間層。允許開發(fā)人員編寫訪問數(shù)據(jù)的代碼而不用關心數(shù)據(jù)庫是如何實現(xiàn)的,而只用關心到數(shù)據(jù)庫的連接。
ADO.NET: ADO雖然是比較成功的產(chǎn)品,但ADO本身的架構仍然有缺陷,尤其是在開發(fā)網(wǎng)絡應用程序時,Recordset無法脫機,嚴重影響了網(wǎng)絡應用的開發(fā)。ADO.NET引入了脫機型數(shù)據(jù)模型的概念,成功解決了ADO所不能及的問題。
關系:ODBC位于數(shù)據(jù)訪問的最底層,OLEDB次之,ADO位于最上層。我們的應用程序可以通過三種方式訪問數(shù)據(jù)庫,分別是應用程序——ODBC——數(shù)據(jù)庫,應用程序——OLEDB——ODBC——數(shù)據(jù)庫,應用程序——ADO——OLEDB——ODBC——數(shù)據(jù)庫。
?
2.ADO.NET類集合主要由五大核心組件類組成:Connection(數(shù)據(jù)庫連接)、Command(數(shù)據(jù)庫的命令)、DataReader(數(shù)據(jù)庫的讀取器)、DataSet(數(shù)據(jù)集)和 DataAdaper(數(shù)據(jù)庫的適配器)。
?
?
3. 數(shù)據(jù)庫連接
使用SqlConnection對象連接SQL Server:ConnectionString = "server=localhost;database=TestData;;User Id=danfoss;Password=danfoss;" (如果使用SQL EXPRESS, 改為server=localhost/sqlexpress)
?
using (SqlConnection conn = new SqlConnection(ConnectionString)){conn.Open();operate database here......conn.Close();}使用OleDbConneetion連接支持OLE DB的數(shù)據(jù)庫,如Access: ConnectionString = "Provider = Microsoft.Jet.OLEDB.4.0;Data Sourse = Access數(shù)據(jù)庫;UserId = 用戶名;Password = 密碼;"
確保資源釋放:1. 訪問結束時,調(diào)用close()方法; 2.利用using 語句
配置連接字符串,并使用ConfigurationManager訪問:
<configuration><connectionStrings><add name="conn1" connectionString="server=192.168.0.23;database=TestData;;User Id=danfoss;Password=danfoss;"/></connectionStrings> </configuration> using System.Configuration;String connsql = ConfigurationManager.ConnectionStrings["conn1"].ToString();4. 數(shù)據(jù)庫執(zhí)行命令
?<Provider>Command類提供了以下可執(zhí)行的命令:
- ExcuteNonQuery() ----- 執(zhí)行命令,返回受影響的記錄個數(shù),可用于update, delete, insert into 語句;
- ExcuteReader() ------ 返回 IDataReader 讀取器;
- ExcuteScalar() ? ------ 返回結果集中的第一行第一列的值;
- ExcuteXMLReader() ------ 僅用于SqlCommand,返回一個XmlReader對象,可以遍歷從數(shù)據(jù)庫中返回XML片段;
以ExcuteReader()讀取Sql Server為例,其他類似:
String connsql = @"server=192.168.0.23;database=TestData;;User Id=danfoss;Password=danfoss;";try{using (SqlConnection conn = new SqlConnection(connsql)){conn.Open();string sqlStr = "select * from StudentInfo";SqlCommand comm = conn.CreateCommand();comm.CommandText = sqlStr;comm.CommandType = System.Data.CommandType.Text;SqlDataReader sr = comm.ExecuteReader();while (sr.Read()){Console.WriteLine("ID:{0},Name:{1},Phone:{2},Time:{3}", sr.GetInt64(0), sr.GetString(1), sr[2], sr[3]);}sr.Close();conn.Close();}}catch (Exception err){Console.WriteLine(err.Message);}finally{}
IDataReader是一個只能向前的讀取器,即只能沿著一個方向遍歷數(shù)據(jù),數(shù)據(jù)庫連接會一直處于打開狀態(tài),直到顯式關閉。若在ExecuteReader()中傳入?yún)?shù)CommandBehavior.CloseConnection,就可以在關閉讀取器時強制關閉數(shù)據(jù)庫連接。
SqlDataReader 有個索引器,可以根據(jù)字符串(即數(shù)據(jù)庫表中的字段名),數(shù)字來獲取數(shù)據(jù),其中直接以數(shù)字索引訪問速度更快。但以索引器訪問返回的是Object ,需要類型轉(zhuǎn)換,因此還有一種更快的訪問方式,以Get開頭的一組類型安全的方法,例如GetInt32(), GetFloat(), GetString()。
?
轉(zhuǎn)載于:https://www.cnblogs.com/change-myself/p/10524002.html
總結
以上是生活随笔為你收集整理的ADO.NET 基础学习笔记1的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vue常见知识点整理
- 下一篇: asp.net ajax控件工具集 Au