C#连接Oracle数据库的一种方法(详细过程)

1. 需要添加一个System.Data.OracleClient引用,这个文件一般在C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0路径下可以找到,v4.0不是绝对的,按照自己所需的版本选择。

2. 在用到的地方加using System.Data.OracleClient;

3. 实际连接的代码我是这样写的:

private void ConnectToOracle()

{

string strCon = "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=" + textBox_OracleIp.Text + ")(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=aaaaa)));Persist Security Info=True;User ID=bbbb;Password=xxxxxxxx;";
                OracleConnection myConn = new OracleConnection(strCon);
                myConn.Open();

}

aaaaa表示数据库实例名,bbbb表示用户名,xxxxxxxx是密码,自己对号入座。

4. 一般情况下,这样做完是连接不上的。因为还需要数据库客户端的支持,你可以装一个客户端软件,32位或64位看自己实际情况,我这里C#生产的代码以x86位为目标平台,假的OracleClient库文件也是32位的,所以装了个32位的客户端,装完后将路径(如C:\Program Files(x86)\Oracle\instantclient_11_2)加到PATH环境变量,再加一个环境变量NLS_LANG,值为SIMPLIFIED CHINESE_CHINA.ZHS16GBK(不绝对),这个是设置ORACLE通信过程中使用的语言和字符集,需要与服务器端一致。这样之后应该是可以成功连接了。

5. 有的人觉得每台要使用我这个软件的PC都要装oracle客户端麻烦,那么还有一种方法可以不用安装oracle客户端,那么需要下载oracle instant client包,可以从oracle官网http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html或csdn下载到。我这里提供一个32位11g的包。解压后有很多文件,很多博客上讲到需要用到里面的9个文件(如classes12.jar oci.dll ocijdbc10.dll ociw32.dll ojdbc14.jar Oracle.DataAccess.dll orannzsbb10.dll oraocci10.dll oraociei10.dll OraOps10.dll),我这边实际测试只需要其中两个文件就能正常连接和读写数据了。这两个文件是oci.dll、oraociei11.dll。

在工程下新建一个oracle文件夹,加入这两个文件,将文件的copy to output directory属性设为copy if newer,这样到时候在exe文件所在目录会有oracle目录,里面含有这两个dll文件。然后再连接oracle之前进行如下设置,我这里是在main方法中设置的:

   //取得存放oracle驱动文件的路径
            string oraclePath = System.Windows.Forms.Application.StartupPath + @"\oracle";
            //设置PATH环境变量,加入oracle驱动所在文件夹,并且这个PATH只在当前进程起作用
            Environment.SetEnvironmentVariable("PATH", oraclePath, EnvironmentVariableTarget.Process);
            //设置ORACLE在通信过程中使用的语言和字符集,这个字符集要和数据库服务器一致,否则会乱码
            //可以用SQL语句查询服务器使用得字符集
            Environment.SetEnvironmentVariable("NLS_LANG", "SIMPLIFIED CHINESE_CHINA.ZHS16GBK", EnvironmentVariableTarget.Process);

这样设置完后,在不安装oracle客户端的情况下也应该能连接上数据库了。


如有不当之处,敬请指正。或者您按照这个方法做还是无法连接,或其他任何相关问题,请联系QQ:1015043947



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值