c#連接oracle的幾種方式
一:通過System.Data.OracleClient(需要安裝Oracle客戶端並配置tnsnames.ora)
1. 添加命名空間System.Data.OracleClient引用
2. using System.Data.OracleClient;
1 string connString = "User ID=IFSAPP;Password=IFSAPP;Data Source=RACE;"; 2 OracleConnection conn = new OracleConnection(connString); 3 try 4 { 5 conn.Open(); 6 MessageBox.Show(conn.State.ToString()); 7 } 8 catch (Exception ex) 9 { 10 ShowErrorMessage(ex.Message.ToString()); 11 } 12 finally 13 { 14 conn.Close(); 15 }
二:通過System.Data.OracleClient(需要安裝Oracle客戶端不需配置tnsnames.ora)
1. 添加命名空間System.Data.OracleClient引用
2. using System.Data.OracleClient;
1 string connString = "User ID=IFSAPP;Password=IFSAPP;Data Source=(DESCRIPTION = (ADDRESS_LIST= (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = RACE)))"; 2 OracleConnection conn = new OracleConnection(connString); 3 try 4 { 5 conn.Open(); 6 MessageBox.Show(conn.State.ToString()); 7 } 8 catch (Exception ex) 9 { 10 ShowErrorMessage(ex.Message.ToString()); 11 } 12 finally 13 { 14 conn.Close(); 15 }
三:通過System.Data.OleDb和Oracle公司的驅動
1. 添加命名空間System.Data.OracleClient引用
2. using System.Data.OleDb;
string connString = "Provider=OraOLEDB.Oracle.1;User ID=IFSAPP;Password=IFSAPP;Data Source=(DESCRIPTION = (ADDRESS_LIST= (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = RACE)))"; OleDbConnection conn = new OleDbConnection(connString); try { conn.Open(); MessageBox.Show(conn.State.ToString()); } catch (Exception ex) { ShowErrorMessage(ex.Message.ToString()); } finally { conn.Close(); }
四:通過System.Data.OleDb和微軟公司的Oracle驅動
1. 添加命名空間System.Data.OracleClient引用
2. using System.Data.OleDb;
1 string connString = "Provider=MSDAORA.1;User ID=IFSAPP;Password=IFSAPP;Data Source=(DESCRIPTION = (ADDRESS_LIST= (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = RACE)))"; 2 OleDbConnection cnn = new OleDbConnection(connString); 3 try 4 { 5 conn.Open(); 6 MessageBox.Show(conn.State.ToString()); 7 } 8 catch (Exception ex) 9 { 10 ShowErrorMessage(ex.Message.ToString()); 11 } 12 finally 13 { 14 conn.Close(); 15 }
備注:
a.XP操作系統已經安裝了微軟公司的Oracle驅動C:\Program Files\Common Files\System\Ole DB\msdaora.dll
b.該驅動需要Oracle客戶端的三個文件(oraocixe10.dll、oci.dll、ociw32.dll)放在System32下即可
五:使用ODP連接
1. 下載安裝ODP.NET(http://www.oracle.com/technetwork/developer-tools/visual-studio/downloads/index.html)
2. 安裝完全成后會產生一序列文件。
3. 找到這個安裝目錄,打開文件夾%ORACLE_HOME%\Network\Admin在這個下面建立一個tnsnames.ora的文件,其內容可以參考其下的Sample目錄下面的配置
Oracle.RACE =
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=
(PROTOCOL=TCP)
(HOST=127.0.0.1)
(PORT=1521)
)
)
(CONNECT_DATA=
(SID=RACE)
(SERVER=DEDICATED)
)
)
Oracle.RACE為連接字符串名稱,可以隨便取。等號后面的字符串可以在Enterprise Manager Console工具中連接數據庫后的TNS描述符中拷過來
4. 引用Oracle.DataAccess命名空間
5. using Oracle.DataAccess.Client;
6. 示例代碼:
1 string connString = "DATA SOURCE=Oracle.RACE;PERSIST SECURITY INFO=True;USER ID=IFSAPP;password=IFSAPP"; 2 OracleConnection conn = new OracleConnection(connString); 3 try 4 { 5 conn.Open(); 6 OracleCommand cmd = new OracleCommand(cmdText,conn); 7 OracleDataReader reader = cmd.ExecuteReader(); 8 this.DataGridView1.DataSource = reader; 9 this.DataGridView1.DataBind(); 10 } 11 catch (Exception ex) 12 { 13 ShowErrorMessage(ex.Message.ToString()); 14 } 15 finally 16 { 17 conn.Close(); 18 }
六:使用第三方驅動
第三方驅動有 Devart,下載驅動 http://www.devart.com/dotconnect/oracle/,但是是商業版,需要購買許可或破解
連接格式 User ID=myUsername;Password=myPassword;Host=ora;Pooling=true;Min Pool Size=0;Max Pool Size=100;Connection Lifetime=0;
1. 引用Devart.Data.Oracle命名空間
2. using Devart.Data.Oracle;
1 OracleConnection conn = new OracleConnection(); 2 conn.ConnectionString = ""; 3 conn.Unicode = true; 4 conn.UserId = "IFSAPP"; 5 conn.Password = "IFSAPP"; 6 conn.Port = 1521; 7 conn.Server = "127.0.0.1"; 8 conn.Sid = "RACE"; 9 try 10 { 11 conn.Open(); 12 //execute queries, etc 13 } 14 catch (Exception ex) 15 { 16 ShowErrorMessage(ex.Message.ToString()); 17 } 18 finally 19 { 20 conn.Close(); 21 }
七、另外的東東
在vs2010中使用c# 連接oracle 11g:
一. 在VS2010中連接 Oracle數據庫有兩種方法:
第一種:微軟提供的連接方法 : using System.Data.OracleClient;
第二種:Oracle自己提供的方法:using Oracle.DataAccess.Client;
連接字符串:
connectionString="Password=czh;User ID=czh;Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=XXX.XXX.XXX.XXX)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=skydream)));"
1. 微軟提供的連接方法 : using System.Data.OracleClient;
測試例程:
··1.在VS2010新建控制台應用程序(C#);
··2.右鍵、引用,在.NET中選擇System.Data.OracleClient;
··3.在程序中 using System.Data.OracleClient;
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Data.OracleClient; 6 7 namespace ConsoleApplication2 8 { 9 class Program 10 { 11 static void Main(string[] args) 12 { 13 string connectionString; 14 string queryString; 15 16 connectionString = "Data Source=202.200.136.125/orcl;User ID=openlab;PassWord=open123"; 17 18 queryString = "SELECT * FROM T_USER"; 19 20 OracleConnection myConnection = new OracleConnection(connectionString); 21 22 OracleCommand myORACCommand = myConnection.CreateCommand(); 23 24 myORACCommand.CommandText = queryString; 25 26 myConnection.Open(); 27 28 OracleDataReader myDataReader = myORACCommand.ExecuteReader(); 29 30 myDataReader.Read(); 31 32 Console.WriteLine("email: " + myDataReader["EMAIL"]); 33 34 myDataReader.Close(); 35 36 myConnection.Close(); 37 38 } 39 } 40 }
2.Oracle自己提供的方法:using Oracle.DataAccess.Client;
前提條件:安裝oracle或者oracle client以及安裝 Oracle Client 。
··1.在VS2010新建控制台應用程序(C#);
··2.右鍵、引用,在.NET/組件中選擇Oracle.DataAccess.Client;如果找不到則選擇 瀏覽,進入到oracleclient的安裝目錄尋找 Oracle.Data.Access.dll (典型目錄為:E:\app\Administrator\product\11.2.0\client_1\ODP.NET\bin\2.x\Oracle.Data>Access.dll)
··3.程序中添加引用:using Oracle.DataAccess.Client;
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using Oracle.DataAccess.Client; 6 7 namespace testConnectionOracle 8 { 9 class Program 10 { 11 static void Main(string[] args) 12 { 13 string connectionString; 14 string queryString; 15 16 connectionString = "Data Source=202.200.155.123/orcl;User ID=openlab;PassWord=open123"; 17 18 queryString = "SELECT * FROM T_USER"; 19 20 OracleConnection myConnection = new OracleConnection(connectionString); 21 22 OracleCommand myORACCommand = myConnection.CreateCommand(); 23 24 myORACCommand.CommandText = queryString; 25 26 myConnection.Open(); 27 28 OracleDataReader myDataReader = myORACCommand.ExecuteReader(); 29 30 myDataReader.Read(); 31 32 Console.WriteLine("email: " + myDataReader["EMAIL"]); 33 34 myDataReader.Close(); 35 36 myConnection.Close(); 37 38 } 39 } 40 }