ODP.NET是Oracle Database 10g和11g的驅動程序,將數據訪問拓展到了.NET平臺。ODP.NET提供了許多新功能和性能優化,使得開發者能夠更加高效地開發.NET與Oracle數據庫的應用。本文將重點介紹如何使用ODP.NET連接Oracle數據庫。
首先,我們需要安裝ODP.NET驅動程序。可以在Oracle官方網站上下載。安裝完成后,我們需要引用ODP.NET程序集才能在.NET應用中使用。可以手動添加程序集或者使用NuGet包安裝。
using Oracle.DataAccess.Client;
接下來,我們需要使用連接字符串連接到Oracle數據庫。連接字符串一般包含以下內容:
- 服務器名稱或IP地址
- 端口號
- 數據庫名稱
- 用戶名和密碼
- 其他可選參數
例如:
string constr = "Data Source=192.168.1.100:1521/orcl;User Id=scott;Password=tiger;"
上述連接字符串使用了Data Source參數指定了服務器名稱和端口號,使用了User Id和Password參數指定了用戶名和密碼。如果Oracle數據庫和.NET應用在同一臺機器上,可以將Data Source指定為“localhost”,如果需要使用Oracle客戶端軟件連接數據庫,也可以將Data Source指定為Oracle客戶端安裝路徑下的tnsnames.ora文件中定義的別名。
下面介紹如何使用連接字符串連接到Oracle數據庫,執行SQL語句并返回結果集。使用ODP.NET需要引用Oracle.DataAccess.Client命名空間。
using Oracle.DataAccess.Client;
string constr = "Data Source=192.168.1.100:1521/orcl;User Id=scott;Password=tiger;";
using (OracleConnection con = new OracleConnection(constr))
{
con.Open();
string sql = "SELECT * FROM emp WHERE deptno=:deptno";
OracleCommand cmd = new OracleCommand(sql, con);
cmd.Parameters.Add(":deptno", OracleDbType.Int32).Value = 10;
using (OracleDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
Console.WriteLine(reader["ename"]);
}
}
}
上述代碼首先創建了一個OracleConnection對象,并傳入連接字符串,使用using關鍵字包裹,確保資源在使用后被釋放。
然后創建了一個SQL語句SELECT * FROM emp WHERE deptno=:deptno,并將參數deptno的值指定為10。使用OracleCommand對象執行SQL語句,并使用OracleDataReader對象讀取結果集。在while循環中遍歷結果集,并輸出ename字段的值。
最后,我們需要關閉連接和釋放資源。
con.Close();
cmd.Dispose();
con.Dispose();
我們還可以使用ODP.NET執行Oracle存儲過程:
using Oracle.DataAccess.Client;
string constr = "Data Source=192.168.1.100:1521/orcl;User Id=scott;Password=tiger;";
using (OracleConnection con = new OracleConnection(constr))
{
con.Open();
OracleCommand cmd = new OracleCommand();
cmd.Connection = con;
cmd.CommandText = "PKG_EMP.ADD_EMP";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("p_empno", OracleDbType.Int32).Value = 8888;
cmd.Parameters.Add("p_ename", OracleDbType.Varchar2, 50).Value = "TEST";
cmd.Parameters.Add("p_job", OracleDbType.Varchar2, 50).Value = "MANAGER";
cmd.Parameters.Add("p_mgr", OracleDbType.Int32).Value = 7839;
cmd.Parameters.Add("p_hiredate", OracleDbType.Date).Value = DateTime.Today;
cmd.Parameters.Add("p_sal", OracleDbType.Decimal).Value = 5000;
cmd.Parameters.Add("p_comm", OracleDbType.Decimal).Value = 1000;
cmd.Parameters.Add("p_deptno", OracleDbType.Int32).Value = 10;
cmd.ExecuteNonQuery();
}
以上代碼執行了一個名為PKG_EMP.ADD_EMP的存儲過程,傳入了8個參數,并使用ExecuteNonQuery方法執行。
本文介紹了如何使用ODP.NET連接Oracle數據庫并執行SQL語句和存儲過程。希望對大家有所幫助。