当前位置: 代码迷 >> 综合 >> c# 连接 oracle数据库字符集为us7ascii的问题,实验了好几个方案 成功了
  详细解决方案

c# 连接 oracle数据库字符集为us7ascii的问题,实验了好几个方案 成功了

热度:58   发布时间:2023-10-21 11:31:03.0


  利用System.Data.OleDb.OdbcConnection类访问数据库。

      连接字符串:"Provider=MSDAORA.1;Data Source=(DESCRIPTION =(ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)))(CONNECT_DATA = (SID = DEV))) ;User Id=****;Password=****"

      将本地字符集改为与服务器相同,方法同方案一相同。

      这一下问题终于解决了。

      强调连接字符串因该使用Provider=MSDAORA.1; 不能使用Provider=oraoledb.oracle;

 

 

通过OleDB连接Oracle数据库,一般有两种provider
A:provider=MSDAORA.1
B:provider=OraOLEDB.Oracle
第一种为微软公司的oracle组件,第二种为oracle的访问组件。
Oracle数据库经常使用的两种字符集
C:英文:SIMPLIFIED CHINESE_CHINA.US7ASCII
D:中文:SIMPLIFIED CHINESE_CHINA.ZHS16GBK
A与C、D搭配,数据读写没有乱码问题,如果出现乱码,则修改系统级(非用户级)的环境变量nls_lang为数据库所使用的字符集,重启电脑即可。
缺点:不支持long/Clob/Blob大字段。
B支持大字段,与D搭配最为完美。如果BC搭配使用,读出无乱码,写入为乱码,做为where条件传进去的中文参数为乱码。无法使用。如果数据库字符集为C,则只能使用A。如果要读取大字段,只得使用B新建连接。

  相关解决方案