在用链接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位,以下: