C#如何连接Oracle数据库

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#如何连接Oracle数据库相关的知识,希望对你有一定的参考价值。

参考技术A 首先 web.config 必须让程序知道你要连接ORACLE
代码如下:
<connectionStrings>
<!--<add name="OracleConnection" connectionString="data source=(description=(address_list =(address = (community = tcp.world)(protocol = tcp)(host = 192.168.63.41)(port = 1521)))(connect_data =(sid = CT)(server = dedicated)));user id=bokun;password=bokun;" providerName="system.data.oracleclient"/>-->
</connectionStrings>
希望对你有帮助
参考技术B Provider = msdaora; Data Source = MyOracleDB; User Id = myUsername; Password = myPassword; 参考技术C string ConnectionString="Data Source=sky;user=system;password=manager;";
OracleConnection conn=new OracleConnection(ConnectionString);
参考技术D 数据源是从Oracle的安装目录下tnsnames.ora文件中去找的。而并非是在系统的“管理工具”下的“数据源(ODBC)”中找。这个tnsnames.ora文件是在
Oracle的安装目下的“client_1/network/admin/”下

Oracle 连接字符串和 Oracle 名称解析是不可分的。假定我们在 tnsnames.ora 文件中定义了一个数据库别名 OraDb,如下:
OraDb=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=OTNSRVR)(PORT=1521))
)
(CONNECT_DATA=
(SERVER=DEDICATED)
(SERVICE_NAME=ORCL)
)
)

OraDb 别名定义客户端的数据库地址连接信息。要使用上面所述的在 tnsnames.ora 文件中定义的 OraDb 别名,您需要使用以下语法:
string oradb = "Data Source=OraDb;User Id=scott;Password=tiger;"; // C#

==============================================
如果您想看到代码时一目了然,但是不嫌复杂的话,您可以修改连接字符串,这样就不需用 tnsnames.ora 文件。只需用在 tnsnames.ora 文件中定义别名的语句替换别名即可。
// C#
string oradb = "Data Source=(DESCRIPTION="
+ "(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=ORASRVR)(PORT=1521)))"
+ "(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=ORCL)));"
+ "User Id=scott;Password=tiger;";



然后创建对应的连接对象就行了
OracleConnection conn = new OracleConnection(oradb);

C#连接Oracle的时候,Oracle.DataAccess.dll能连接数据库,Oracle.ManagedDataAccess却不能?

如图所示,代码完全一样,使用Oracle.ManagedDataAccess就报ora-ORA-12154错误(无法解析服务器名),我在cmd里tnsping是没有问题的

Oracle.DataAccess.dll需要安装Oracle客户端,不能使用域名或ip
Oracle.ManagedDataAccess新一代的连接工具,不依赖Oracle客户端
参考技术A 全托管(Oracle.ManagedDataAccess)是不支持使用Alias别名进行访问的,你截图中的orcl2应该是你配置数据源别名(tnsnames.ora), 这种方式Oracle.DataAccess才能访问,你在cmd中可以使用tnsping,是因为你本机已经装有tnsping工具(可以自动识别环境变量并访问tnsnames.ora文件),而Oracle.ManagedDataAccess,仅仅只依赖于.net4.0+,是简单高效的驱动

以上是关于C#如何连接Oracle数据库的主要内容,如果未能解决你的问题,请参考以下文章

C# 怎么连接oracle数据库

C#连接oracle连接字符串怎么写啊?

C#连接oracle连接字符串怎么写啊?

C#的EF框架怎么连接Oracle数据库

C#连接Oracle的时候,Oracle.DataAccess.dll能连接数据库,Oracle.ManagedDataAccess却不能?

C# 连接Oracle数据库和读取数据