oracle client 是什么,坑爹的OracleClient

博主分享了自己在使用C#连接Oracle数据库时遇到的挑战,包括OracleClient命名空间在高版本.NET中移除,需要下载ODAC组件,以及在处理中文字符时遭遇的乱码问题。尝试了修改数据库字符集、设置环境变量和使用OracleParameter等方法均未成功,最终通过使用OleDbConnection解决了乱码问题。
摘要由CSDN通过智能技术生成

今天研究了一天的Oracle数据库,尝试着如何去用c#读写Oracle数据库,没想到的是,原本以为很简单的东西,研究了整整一天。

前几天一直在和金域和LIS的开发商谈金域接口的事情,难点在于LIS开发商做这个接口要支付额外的费用,将这个事情提交医院,因为医院明年考虑整体换成东软的系统,不愿意再投入。这个时候金域跑出来了,他们愿意出这个钱,前提就是LIS开发商和他们的客户有足够多的交集。

就在我每天纠结这个事情怎么办的时候,我突然发现自己又钻入牛角尖了。我干嘛非要LIS开发商来做这个接口呢,他做了也无非就是将金域的报告集成到他们的报告查询系统中去。这个事情其实自己也可以做,集成不了,就做一个独立的查询程序了!如果再和他们这个绕,我自己都会被绕进去了,所以有时候跳跃性思维也很重要。

那就先研究怎么把金域回传的结果写入Oracel数据库,即我们的HIS吧。

1、网上一搜,很简单啊,用System.data.OracleClient命名空间里面的OracleConnection就可以了。

2、于是乎写上using System.data.OracleClient,尼玛,找不到啊!

3、继续百度之,原来微软在.net 4.0版本后,已经不再维护OracleClient了,如果要用需要到Oracle官网去下载ODAC组建。

4、于是乎去下载去吧。上次想下载的jdk因为很慢没有下载,希望这次能够快点。尼玛!!还要注册才能下载。

5、这网速,放弃。回头去VS2010里面去吧.net 4.0 改成了3.5,你不是说4以后没了么,3.5总有吧,失败,引用里面还是找不到!

6、继续百度之,原来要从文件引用,从.net里面是没有的。解决方案上->引用->添加引用,然后在文件夹C:\Windows\Microsoft.NET\Framework\v2.0.50727下就可以找到System.Data.OracleClient.dll,点击确定,就OK了。

2978c72cf3c6bf4e2bae88cb6fb26f92.png

这下总可以用了吧,其实噩耗才开始:

插入一个数据看看,中文乱码!

什么解决方案呢?

1、修改oracle数据库以及客户端的字符集(select userenv(‘language’) from dual;),一看数据的字符集AMERICAN_AMERICA.us7ascii,再去看本地电脑上注册表里面Oracle下的NLS_LANG还是AMERICAN_AMERICA.us7ascii啊,这两个一样呢,照样乱码,不过为什么乱码倒是知道了,c#是unicode编码的。

2、通过C#自带的函数设置环境变量

System.Environment.SetEnvironmentVarible(“NLS_LANG “,” SIMPLIFIED CHINESE_CHINA.ZHS16GBK”);

照样不行!

3、网上找的,用OracleParameter来格式化一下中文,别提了,是一样不行的。

眼看一天就要过去了,不甘心啊,这个问题都没有解决掉。

终极杀招,好吧,你赢了,用using System.Data.OleDb;

conn = new OleDbConnection(@”Provider=MSDAORA.1;User ID=xxx;Password=xxx;Data Source=dbserver;Persist Security Info=False”);

真的不乱码了哦,哪怕是你用Provider=’OraOleDb.Oracle’都会乱码,话说微软早先做的OleDbConnection充分考虑了字符集的问题,比Oracle官方都做的好啊?

如无特别说明,本博客文章皆为原创。转载请说明,来自吵吵博客。

吵吵微信朋友圈,请付款实名加入:

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值