ADO.NET 是 .NET 框架(.NET Framework)中的一個數據庫訪問架構,ADO是ActiveX Data Objects的縮寫是一個COM組件庫。用於實現 .NET 應用程序對於數據庫的訪問。html
舊的版本中還有 System.Data.OracleClient,微軟已再也不維護,使用 ODP.Net鏈接Oracle;git
ADO.NET六大對象分別是:github
一、Connection(鏈接數據庫,事物處理也使用此對象)數據庫
二、Command(執行T-SQL語句--返回數據、修改數據、運行存儲過程及發送或檢索參數信息的數據庫命令)windows
三、DataAdapter(主要功能填充DataSet,在修改Dataset對象中的數據後通知數據庫更新數據到數據庫)安全
四、DataReader(讀取數據庫,一種只讀模式,只向前的)架構
五、DataSet(數據集-ADO.Net的核心概念,能夠把它看成是存在於內存中的數據庫),能夠包含一組DataTable,及這些表之間的關係;oracle
六、DataTable(數據的容器):由一個或多個DataColumn組成,每一個DataColumn由一個或多個包含數據的DataRow組成;app
Connection類有四種:SqlConnection,OleDbConnection,OdbcConnection和OracleConnection。框架
SqlConnection類的對象鏈接SQL Server數據庫;OracleConnection 類的對象鏈接Oracle數據庫(Oracle的版本小於11使用此種方式,當版本爲11及以上時使用ODP.Net);OleDbConnection類的對象鏈接支持OLE DB的數據庫,如Access;而OdbcConnection類的對象鏈接任何支持ODBC(開放數據庫互聯)的數據庫。
與數據庫的全部通信最終都是經過Connection對象來完成的。
SqlConnection 的鏈接字符串(ConnectionString)
加入命名空間:using System.Data.SqlClient;
鏈接數據庫: string conString = "data source=IP地址; Database=數據庫名;user id=用戶名; password=密碼";
CommandType用來定義某條命令是SQL子句、存儲過程的調用、仍是完整的表語句(僅從給定的表中選擇全部行和列);TableDirect命令類型只對OleDb提供程序有效;
ExecuteNonQuery():執行SQL,返回一個整型變量,若是SQL是對數據庫的記錄進行操做,那麼返回操做影響的記錄條數,若是是 SQL="CREATE TABLE LookupCodes (code_id smallint IDENTITY(1,1) PRIMARY KEY CLUSTERED, code_desc varchar(50) NOT NULL)"那麼在表建立成功後該方法返回 –1。
ExecuteScalar():執行SQL,(若是SQL是查詢Select)返回查詢結果的第一行第一列,若是(若是SQL不是查詢Select)那 麼返回未實列化的對象,由於對象未實列化,因此返回結果不能ToString(),不能Equals(null),也就是說返回結果沒有任何做用
ExecuteReader方法執行SQL,(若是SQL是查詢Select)返回查詢結果的集合,類型是 System.Data.OleDb.OleDbDataReader,你能夠經過此結果,獲取查詢的數據。若是(若是SQL不是查詢Select)那麼 返回一個沒有任何數據的System.Data.OleDb.OleDbDataReader類型的集合(EOF);
ExecuteXmlReader() ---返回一個XmlReader對象,能夠遍歷從數據庫中返回的XML片斷;適應於SqlClient和ODP.net提供的程序
OleDbConnection鏈接各類數據源 ,因爲數據源不一樣,相應的鏈接字符串也會不一樣。
加入命名空間:using System.Data.OleDb;
鏈接 SQL Server: string conString = "Provider=SQLOLEDB.1; Persist Security Info=False; user id=用戶名; Database=數據庫名; data source=COMPUTER; ";
OleDbConnection myconnection = new OleDbConnection(conString);
myconnection.open();
鏈接 Access: string conString = "Provider=Microsoft.Jet.OLEDB.4.0; data source=C:\\Database1.mdb; Persist Security Info=False;";
OleDbConnection myconnection = new OleDbConnection(conString);
myconnection.open();
(也能夠經過創建.udl文件來得到字符串)
鏈接 Oracle:
string conString = "Provider=MSDAORA; user id=用戶名; password=密碼; data source=db; Persist Security Info=False;";
string oradb = "Provider=OraOLEDB.Oracle;Data Source=water;User Id=modis;Password=modis;";
OleDbConnection myconnection = new OleDbConnection(conString);
myconnection.open();
OleDb方式,微軟和Oracle公司各自提供了OleDb的驅動程序,使用方法的差異不多。
引用類庫:微軟的只須要System.Data.dll;若用Oracle的驅動,雖然也只要引入System.Data.dll,但前提是首先安裝Oracle針對.Net的數據訪問組件。
鏈接字符串:provider--微軟「provider=MSDAORA;」;Oracle-「provider='OraOleDb.Oracle';」。前者已經不怎麼使用;後者需安裝Oracle客戶端;
未在本地計算機上註冊「OraOLEDB.Oracle」提供程序解決方案的錯誤處理:
regsvr32 E:\app\Administrator\product\11.2.0\dbhome_1\oledb\lib\OraOLEDB11.dll
OracleConnection鏈接Oracle---微軟已再也不維護,建議使用Oracle的ODP.Net鏈接
加入命名空間:using System.Data.OracleClient;
鏈接數據庫: string conString = "data source=IP地址; Database=數據庫名;user id=用戶名; password=密碼";
OracleConnection myconnection = new OracleConnection(conString);
myconnection.open();
注意:使用不一樣的Connection對象須要導入不一樣的命名空間。OleDbConnection的命名空間爲System.Data.OleDb。SqlConnection的命名空間爲System.Data.SqlClient。OracleConnection的命名空間爲System.Data.OracleClinet。
DBHelpers是一個簡單但功能強大的庫,用於使用簡單的ADO.NET數據庫訪問組件。
DBHelpers包含哪些特徵
Async(異步)、Batch execution(批量執行腳本)、Custom converters(自定義類型轉換)、
Multi table retrieval(多結果集查詢)、Easy safe parameterized DbCommand(簡單安全的參數化)、
Automatic mapping of objects(自動映射類型)、Built in paging support(內置支持分頁)、等等。
DBHelpers內置方法
ExecuteNonQuery、ExecuteReader、ExecuteScalar、
ExecuteDataTable、ExecuteDataSet、ExecuteArray、ExecuteDictionary、ExecuteObject、ExecuteList、
ExecuteNonQueryAsync、ExecuteObjectAsync、ExecuteListAsync
github下載地址: