揭秘ADO.NET OracleClient命名空間對(duì)象
大家都知道隨著技術(shù)的發(fā)展,訪問(wèn)數(shù)據(jù)庫(kù)的方式也很多,不知道大家喜歡用什么方法去訪問(wèn)數(shù)據(jù)庫(kù)呢?先給大家介紹常見(jiàn)的幾種:開(kāi)放數(shù)據(jù)庫(kù)互聯(lián)(ODBC)、數(shù)據(jù)訪問(wèn)對(duì)象(DAO)、遠(yuǎn)程數(shù)據(jù)對(duì)象(RDO)、ActiveX數(shù)據(jù)對(duì)象(ADO)。我們今天主要要學(xué)習(xí)ADO.NET OracleClient命名空間中的幾個(gè)常用對(duì)象,用這作為對(duì)ADO.NET認(rèn)識(shí)學(xué)習(xí)的開(kāi)始。
#T#ADO與ADO.NET既有相似也有區(qū)別,他們都能夠編寫對(duì)數(shù)據(jù)庫(kù)服務(wù)器中的數(shù)據(jù)進(jìn)行訪問(wèn)和操作的應(yīng)用程序,并且易于使用、高速度、低內(nèi)存支出和占用磁盤空間較少,支持用于建立基于客戶端/服務(wù)器和Web的應(yīng)用程序的主要功能。但是ADO使用OLEDB接口并基于微軟的COM技術(shù),而ADO.NET擁有自己的ADO.NET接口并且基于微軟的.NET體系架構(gòu)。眾所周知.NET體系不同于COM體系,ADO.NET接口也就完全不同于ADO和OLEDB接口,這也就是說(shuō)ADO.NET為.NET構(gòu)架提供了優(yōu)化的數(shù)據(jù)訪問(wèn)模型,和基于COM的ADO是完全兩樣的數(shù)據(jù)訪問(wèn)方式。
ADO.NET是一組訪問(wèn)數(shù)據(jù)源的面向?qū)ο蟮念悗?kù)。簡(jiǎn)單的理解,數(shù)據(jù)源就是數(shù)據(jù)庫(kù),它同時(shí)也能夠是文本文件、Excel表格或者XML文件。ADO.NET里包括了許多專門用于和數(shù)據(jù)打交道的對(duì)象。下面介紹了一些最常用的對(duì)象。這些對(duì)象是學(xué)習(xí)ADO.NET必須了解的。掌握它們后我們將了解使用ADO.NET和數(shù)據(jù)打交道需要考慮哪些事情。
一、ADO.NET OracleClient之OracleConnection對(duì)象
要訪問(wèn)一個(gè)數(shù)據(jù)源,你必須先建立一個(gè)到它的連接。這個(gè)連接里描述了數(shù)據(jù)庫(kù)服務(wù)器類型、數(shù)據(jù)庫(kù)名字、用戶名、密碼,和連接數(shù)據(jù)庫(kù)所需要的其它參數(shù)。command對(duì)象通過(guò)使用connection對(duì)象來(lái)知道是在哪個(gè)數(shù)據(jù)庫(kù)上面執(zhí)行ORACLE命令。
- OracleConnectionoracleConn=newOracleConnection();
- oracleConn.ConnectionString="UserId=scott;Password=tiger;
- DataSource=oracleSN;";
- oracleConn.Open();
二、ADO.NET OracleClient之OracleCommand對(duì)象
連接數(shù)據(jù)庫(kù)后就可以開(kāi)始想要執(zhí)行的數(shù)據(jù)庫(kù)操作,這個(gè)是通過(guò)command對(duì)象完成,command對(duì)象一般被用來(lái)發(fā)送ORACLE語(yǔ)句給數(shù)據(jù)庫(kù)。command對(duì)象通過(guò)connection對(duì)象得知道應(yīng)該與哪個(gè)數(shù)據(jù)庫(kù)進(jìn)行連接。我們既可以用command對(duì)象來(lái)直接執(zhí)行ORACLE命令,也可以將一個(gè)command對(duì)象的引用傳遞給OracleDataAdapter,OracleDataAdapter能包含一系列的command對(duì)象,可以處理大量數(shù)據(jù)。
- publicvoidReadMyData(stringconnectionString)
- {
- stringqueryString="SELECTEmpNo,DeptNoFROMScott.Emp";
- OracleConnectionconnection=newOracleConnection(connectionString)
- {
- OracleCommandcommand=newOracleCommand(queryString,connection);
- connection.Open();
- OracleDataReaderreader=command.ExecuteReader();
- try
- {
- while(reader.Read())
- {
- Console.WriteLine(reader.GetInt32(0)+","+reader.GetInt32(1));
- }
- }
- finally
- {
- reader.Close();
- }
- }
- }