.NET2.0中使用最少的ODAC动态库文件连接Oracle数据库
来源:互联网 发布:新纪元软件下载 编辑:程序博客网 时间:2024/05/16 05:01
一直使用.NET+SQLServer做应用系统,没有使用过Oracle。最近,交通部的一个应用系统使用了Oracle11g数据库,而俺的WebService程序必须访问该库。于是在俺的本本上安装了Oracle9i以及Navicat,并使用C# 2005自带的Oracle组件(System.Data.OracleClient)连接并访问了本本上的Oracle库(上网搜索后知道,该组件已经做了废弃标记)。但是,部署这个WebService到IIS服务器上并使用俺的.NET窗体程序访问该WebService时,报错误”System.Exception: System.Data.OracleClient requires Oracle client software version 8.1.7 or greater”。
在网上搜索找到的原因是:俺的IIS服务器上没有安装Oracle Client。这个客户端有600多M,而俺一向不喜欢安装(setup)组件,更何况是这类大块头东东。于是再google.NET连接Oracle的相关技术文章,找到了ODAC(Oracle Data Access Components),并在官网下载了XCopy的压缩包文件(地址:http://www.oracle.com/technetwork/topics/dotnet/utilsoft-086879.html)(注意是XCopy而不是Setup!)。综合了一些ODAC在.NET下的使用技术介绍,将该包中4个dll文件拷贝到.NET应用程序(如exe或dll或俺的WebService应用的bin)的同文件夹中即可:
- oci.dll(XCopy文件中的instantclient_11_2文件夹)
- oracle.DataAccess.dll(XCopy文件中的odp.net20/2.x文件夹)
- oraociei11.dll(XCopy文件中的instantclient_11_2文件夹)
- OraOps11w.dll(XCopy文件中的odp.net20/bin文件夹)
上述解决方案可以连接Oracle9i和Oracle11g,在 编程与部署时还需要注意:
- 编程时,在项目中必须添加引用 Oracle.DataAccess.ddll
- 发布时,上述4个dll与应用程序(exe/dll)必须在同一个文件夹中
- 如果连接时报错误“ORA-12705: Cannot access NLS data files or invalid environmentspecified”,其原因是注册表中的NLS_Lang设置不正确(俺机器安装了Oracle软件,该值设置为N/A)。解决方法有二:
- 删除注册表HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE下的NLS_LANG键,或者
- 修改注册表HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE下的NLS_LANG值为simplified chinese_china.zhs16gbk
与安装一个超过600M的Oracle Client方式或直接安装ODAC组件包(即Setup方式)比较,从XCopy文件中提取的4个dll文件即可以满足连接Oracle数据库的需求。当然,如果有多个应用需要连接Oracle库,此时使用ODAC的Setup方式更好,因为不需要多次拷贝4个dll文件。
下面是一个demo的代码
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using Oracle.DataAccess.Client;namespace WindowsApplication1{ public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { using (OracleConnection oraConn = new OracleConnection()) { oraConn.ConnectionString = "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=csust))); User Id=system; Password=h85040305"; oraConn.Open(); using (OracleCommand oraCmd = new OracleCommand("select * from test1", oraConn)) using (OracleDataReader oraReader = oraCmd.ExecuteReader()) { while (oraReader.Read() == true) { MessageBox.Show((string)oraReader["Name"]); object name = oraReader["Name"]; object age = oraReader["Age"]; object wage = oraReader["Wage"]; object birthDay = oraReader["BirthDay"]; object xzqhNo = oraReader["XZQHNo"]; MessageBox.Show(xzqhNo.GetType().Name); MessageBox.Show(name.ToString() + "," + ((decimal)age).ToString("F0") + "," + ((decimal)wage).ToString("F2") + "," + ((DateTime)birthDay).ToString("yyyy-MM-dd HH:mm:ss") + "," + xzqhNo.ToString()); } } } } }}
- .NET2.0中使用最少的ODAC动态库文件连接Oracle数据库
- Delphi连接Oracle控件ODAC的安装及使用
- Delphi连接Oracle控件ODAC的安装及使用
- vs2010中使用odac for .net的连接配置
- C#使用ODAC查询Oracle数据库
- 采用ODAC,ODBC连接Oracle
- C#使用ODAC向Oracle数据库插入海量实时数据
- [Oracle]ASP.NET中使用ODP.NET(ODAC)對含有自定義類型參數的存儲過程進行操作
- (ZT)[Oracle]ASP.NET中使用ODP.NET(ODAC)對含有自定義類型參數的存儲過程進行操作
- asp.net2.0 Membership 中使用自己的数据库
- ASP.NET2.0中FileUpload控件的使用(即ASP.NET2.0中如何上传文件)
- ASP.NET2.0中FileUpload控件的使用(即ASP.NET2.0中如何上传文件)
- 使用的oracle 为10.2.0.1.0版本,道对应的应该下载哪个ODAC
- asp.net2.0中关于ASP.NET 网站管理工具无法连接sql server 数据库的处理
- .Net+EF连接Oracle 10、11 开发,ODAC安装配置与使用详解
- ODAC 应用技巧 (一)使用 ODAC 的 Net 方式
- ASP.NET2.0中将数据库字段中存储的文件显示出来
- c#中odp.net 4.0利用odac操作oracle数据库学习(一)
- PHP扩展模块结构
- Asp.net中强签名dll:引用程序集没有强名称解决办法
- C++的一些语法
- Objective-C 协议 简介 +委托的实现
- 跟我学习GNU Emacs - 12
- .NET2.0中使用最少的ODAC动态库文件连接Oracle数据库
- .Net 文件处理
- DropDownList设置默认选中项
- 学习使用SQLite(版本3.7.4)(中A)
- 编译MobileVLC时,可能会用到的一些编译调试技巧集合(Mac)
- 黑马程序员------dom简单使用之一
- 玩转 Android MediaPlayer之视频预加载(优化)
- ACM竞赛须掌握的知识
- 博弈算法-Nim及变体