使用Oracle.ManagedDataAccess连接数据库的记录

本是做一个小工具,需要连接ORACLE数据库(小工具是基于.net Framework 4.5框架 开发的)。
最初是使用Oracle.DataAccess.dll来访问数据库,但在随后使用中发现服务器安装的oracle客户端既有32位的又有64位的而且版本也不一定一致,就导致连接数据库各种问题,但使用Oracle.ManagedDataAccess就可以忽略客户端是多少位的甚至可以不要客户端。

连接数据库

使用Oracle.ManagedDataAccess连接数据库,首先当然是先引用Oracle.ManagedDataAccess.dll了。
Oracle.ManagedDataAccess.dll
引用Oracle.ManagedDataAccess.dll,使用方式同ADO.NET区别不大。调试运行提示:“OracleInternal.MTS.PSPEManager”的类型初始值设定项引发异常。
各种搜索发现缺少一个Oracle.ManagedDataAccess.EntityFramework.DLL的引用。
Oracle.ManagedDataAccess.EntityFramework.DLL
本机调试正常,程序独立运行正常,拷贝到服务器上运行又出现问题。
The type initializer for ‘OracleInternal.MTS.DTCPSPEManager’ threw an exception.
又是一通搜索直到看到这两个帖子,突然有点恍然大明白了。
https://stackoverflow.com/questions/30961508/oracleinternal-mts-dtcpspemanager-error
https://blog.csdn.net/pmy_c_l/article/details/78202606
因为程序连接oracle用的是Oracle.ManagedDataAccess.Client,程序运行时需要调用Oracle.ManagedDataAccessDTC.dll,但是这个程序集又不需要显示调用,仅需要把Oracle.ManagedDataAccessDTC.dll放到程序运行目录下(注意区分64位和32位)。

示例

App.config中配置连接字符串。

<add name="xxx" connectionString="user id=xxx;password=xxx;data source=8.8.8.8:1521/orcl; Pooling=false;"/>

引用:Oracle.ManagedDataAccess.Client

using Oracle.ManagedDataAccess.Client;

程序中连接Oracle查询数据。(此处基本大同小异)

 private string connString = ConfigurationManager.ConnectionStrings["xxx"].ToString();//获取连接字符串
        private void button1_Click(object sender, EventArgs e)
        {
            OracleConnection con = new OracleConnection(connString);//实例化
            con.ConnectionString = connString;
            con.Open();//建立连接,打开数据库
            OracleCommand cmd = con.CreateCommand();// 创建数据库对象
            cmd.CommandText = "select * from log";
            OracleDataReader reader = cmd.ExecuteReader();
            while (reader.Read())//读取每行数据
            {
                MessageBox.Show("txt: " + reader.GetString(0));
            }
        }

最终程序其实用到了三个DLL,写于此一来留以备用,而来为后来的小伙伴们少走弯路。
连接所需的dll
dll下载地址:https://download.csdn.net/download/a137185067/11069474
有些朋友加载了对应的DLL后还是提示错误可能是缺少了运行时库,下载一个vcredist.exe安装后试试。
vcredist_x64下载地址:https://download.csdn.net/download/a137185067/11236926

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值