原理
通过调用oracle客户端动态库,来完成执行SQL脚本。
1、动态库来自 oracle10G 客户端安装过后的bin目录下(一定要是客户端,不能是服务器端的)
2、动态库分别为:oraociei10.dll、oraocci10.dll、orannzsbb10.dll、oci.dll。
3、将动态库直接放入你程序的BIN目录下代码中添加 System.Data.OracleClient 引用。
4、连接字符串写成:
connStr = string.Format("Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST={0})(PORT={1}))"
+ "(CONNECT_DATA=(SID={2})));User Id={3};Password={4};",数据库服务器所在机器的IP地址,
端口, 实例名, 用户名, 密码);
5、添加环境变量(确切的说不是添加到环境变量中,只是添加到程序上下文中),如果不添加该字符集,执行SQL语句时,如果有中文,会出现乱码。
[DllImport("Kernel32.DLL", SetLastError = true)]
public static extern bool SetEnvironmentVariable(string lpName, string lpValue);
SetEnvironmentVariable("NLS_LANG", "SIMPLIFIED CHINESE_CHINA.ZHS16GBK");
默认的字符集为:SIMPLIFIED CHINESE_CHINA.ZHS16GBK (注意,该字符集必须与服务器的字符集一致否则导致中文乱码)。