VB.NET无需安装Oracle客户端直连数据库及连接字符串报错问询
报错原因说明
你修改后的连接字符串删除了原有的Provider参数,OLEDB连接必须指定提供程序,所以才会抛出这个错误。但哪怕你补回Provider=MSDAORA参数,也没法实现免Oracle客户端的需求,因为MSDAORA是微软开发的老旧Oracle OLEDB提供程序,本身强依赖本地安装的Oracle客户端组件。
可行的免客户端方案(推荐)
使用Oracle官方托管驱动Oracle.ManagedDataAccess,该驱动是纯.NET实现的,不需要本地安装Oracle客户端,也不需要配置tnsnames.ora,完美适配你的需求,操作步骤如下:
- 打开你的VB.NET项目,在Visual Studio 2019的NuGet包管理器中搜索安装
Oracle.ManagedDataAccess(.NET Framework项目)或Oracle.ManagedDataAccess.Core(.NET Core/.NET 5+项目) - 替换原有代码中的数据库操作类:将原有的
System.Data.OleDb命名空间下的OleDbConnection、OleDbCommand等类,替换为Oracle.ManagedDataAccess.Client命名空间下的OracleConnection、OracleCommand等对应类 - 使用如下格式的连接字符串即可直接连接:
Data Source=10.1.1.12:1521/你的Oracle服务名;User Id=MyUser;Password=MyPass;
注意:需要将上面的
你的Oracle服务名替换为实际的Oracle实例服务名,默认通常为ORCL,如果是用SID连接可以写成Data Source=10.1.1.12:1521/你的SID;
临时兼容方案(仍需Oracle客户端,仅解决当前报错)
如果你暂时不想替换驱动,只是要解决当前的编译报错,补回Provider参数并修正EZCONNECT格式即可:
Provider=MSDAORA;Data Source=//10.1.1.12:1521/你的服务名;Persist Security Info=True;Password=MyPass;User ID=MyUser
该方案仍然需要目标机器安装Oracle客户端,仅解决连接字符串的语法错误。
内容的提问来源于stack exchange,提问作者Rick
相关产品推荐
相关产品推荐

