c#连接Oracle

本文介绍使用C#通过两种方式连接Oracle数据库的方法:一是利用System.Data.OracleClient,二是使用System.Data.OleDb结合Oracle提供的驱动。文章详细展示了连接代码,并针对可能出现的BadImageFormatException和未注册OraOLEDB.Oracle.1提供程序等问题提供了相应的解决步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一:通过System.Data.OracleClient
1. 添加命名空间System.Data.OracleClient引用

//在解决方案资源管理器里引用右键单击引用项找到添加

  1. using System.Data.OracleClient;

  2. string connString = “User ID=HUMAN;Password=123456;Data Source=HR;”;

//HR是自己创建的数据库实例,HUMAN是创建的用户

OracleConnection conn = new OracleConnection(connString);
try
{
conn.Open();
MessageBox.Show(conn.State.ToString());
}
catch (Exception ex)
{
ShowErrorMessage(ex.Message.ToString());
}
finally
{
conn.Close();
}
注:这种情况下连接可能会出现BadImageFormatException报错

在我是在windows10系统上安装的64位的Oracle 导致VS2012 项目访问 数据库时产生了 “尝试加载 oracle客户端库时引生BadImageFormatExceiption。
在项目 “属性” 中选择 “生成”,把‘生成’ 勾选64位,同理如果安装的32位客户端则把首选32位勾上就行

二:通过System.Data.OleDb和Oracle公司的驱动
1. 添加命名空间System.Data.OracleClient引用
2. using System.Data.OleDb;
3.
string connString = “Provider=OraOLEDB.Oracle.1;User ID=HUMAN;Password=123456;Data Source=(DESCRIPTION = (ADDRESS_LIST= (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = HR)))”;
OleDbConnection conn = new OleDbConnection(connString);
try
{
conn.Open();
MessageBox.Show(conn.State.ToString());
}
catch (Exception ex)
{
ShowErrorMessage(ex.Message.ToString());
}
finally
{
conn.Close();
}

注:这种情况下连接可能会出现的报错

1.C#程序中需要以Provider=OraOLEDB.Oracle.1方式访问oracle数据库。但程序执行时报异常:未在本地计算机注册“OraOLEDB.Oracle.1”提供程序

解决办法:服务器ORACLE为11g,虽然安装时选择了Oracle Data Provider for .net 和Oracle Provider for OLE DB。但是还是需要人工命令行注册一下
regsvr32 “E:\oracle11g\product\11.2.0\dbhome_1\BIN\OraOledb11.dll”

2.提示未找到 Oracle 客户端和网络组件,找到Oracle客户端安装目录,右键属性找到 “安全” 项添加Everyone用户并赋予完全控制的权限,然后应用确定,重新启动系统

//两种问题都有可能是客户端安装出错,如果参考方法不行,建议完全卸载客户端重新安装,建议安装32位客户端,不知道怎么完全卸载自行百度

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值