在用鏈接oracle數據庫的時候,常常會碰到以下問題:html
比較好的解決方案,是引用oracle dll 文件鏈接oralce數據庫,而不用依賴於安裝的oralce client.sql
步驟以下:數據庫
1. 從'Oracle Data Provider for .NET' 獲取DLLs包oracle
能夠到 http://www.oracle.com/technetwork/topics/dotnet/index-085163.html 下載oracle 安裝文件。ide
2.引用DLLS到項目spa
搜索Oracle客戶端的安裝目錄,並將下列四個DLL複製到項目的Bin文件夾:orm
引用dll文件,Project --> Add Reference..., 點擊 Browse 選擇 Oracle.DataAccess.dll 文件.server
在Oracle.DataAccess.dll 的Copy to Output Directory屬性中,設置 Copy always.htm
3.用全鏈接字符串blog
爲了避免必擔憂應用程序部署時TNS的設置問題,能夠用整個鏈接字符串以下:
Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=servername)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=servicename)));User Id=username;Password=********;
例如:
using System; using System.Data; using Oracle.DataAccess.Client; static class Program { [STAThread] static void Main() { TestOracle(); } private static void TestOracle() { string connString = "Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)" + "(HOST=servername)(PORT=1521)))" + "(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=servicename)));"+ "User Id=username;Password=********;"; using (OracleConnection conn = new OracleConnection(connString)) { string sqlSelect = "SELECT * FROM TEST_TABLE"; using (OracleDataAdapter da = new OracleDataAdapter(sqlSelect, conn)) { var table = new DataTable(); da.Fill(table); if (table.Rows.Count > 1) Console.WriteLine("Successfully read oracle."); } } } }
注:
若是系統是X64位,用32的Oracle.DataAccess.dll 可能會出現以下問題:
Could not load file or assembly 'Oracle.DataAccess' or one of its dependencies. An attempt was made to load a program with an incorrect format.
解決方法:
設置Pool支持32位,以下: