ADO.Net

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類有四種:SqlConnectionOleDbConnectionOdbcConnectionOracleConnection框架

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下載地址:

https://github.com/nvivo/dbhelpers

相關文章
相關標籤/搜索