c#访问Oracle,本来是很常见的,但是在实际的工作中确实遇到了各种各样的异常,特此分析并总结如下,以便以后查找方便:
数据库的字符集常用的两种方式:
provider=MSDAORA.1是微软写的驱动
使用MSDAORA.1驱动的OLEDB连接,不管数据库字符集是美国编码US7ASCII还是中国编码ZHS16GBK,都不会出现乱码,若出现乱码,可能是本地Oracle与服务端Oracle字符集不相同导致的。需要修改注册表nls_lang变量。但是,在X64位Oracle上
数据库的字符集常用的两种方式:
美国编码SIMPLIFIED CHINESE_CHINA.US7ASCII
中国编码SIMPLIFIED CHINESE_CHINA.ZHS16GBK
连接方式:1.OLEDB连接
{Provider=MSDAORA.1;User ID=martin;password=1;Data Source=orcl;Unicode=True;Integrated Security=yes;Persist Security Info=False}
{Provider=ORAOLEDB.ORACLE;User ID=martin;password=1;Data Source=orcl;Unicode=True;Persist Security Info=False}
OLEDB连接Oracle分为两种方式,即分别微软和Oracle写的不同的驱动。
provider=MSDAORA.1是微软写的驱动
provider=OraOLEDB.Oracle是Oracle自带的驱动
小结:使用MSDAORA.1驱动的OLEDB连接,不管数据库字符集是美国编码US7ASCII还是中国编码ZHS16GBK,都不会出现乱码,若出现乱码,可能是本地Oracle与服务端Oracle字符集不相同导致的。需要修改注册表nls_lang变量。但是,在X64位Oracle上