不知是不是受到微软影响,.net程序员似乎与生俱来与MS SQLSERVER密不可分,我所认识的.net开发者都用微软的MS。我也忘记了当时为何不加任何考虑的就投入了SQL SERVER的怀抱,陪伴着他从7.0直到现在的2008。当然这是微软所希望的,任何一个企业都希望顾客选择自己“一条龙”服务。但作为开发者我却不希望一直这样下去,特别是我们在实际工作中会接触到许多不同的系统,如果要对他们进行整合对接,擅长一家之言就稍显力不从心了。最近我就遇到了.net访问oracle的问题,虽然这个问题百度之后一堆解决方案,但真要吃透却是要真正消耗几个脑细胞的。闲话不说,下面简单讲述下事情经过。

公司最近发展很快,新上了很多项目,加之原先有我们自己的一套信息系统,因此,信息孤岛现象特别严重。因此,有必要对这些小孤岛慢慢进行整合统一,以达到资源共享,方便管理。作为客户,开发不是我们的强项。尤其以前比较封闭,很少接触ORACLE数据库,只是听说ORACLE和SQL SERVER从表结构到事物处理,甚至连SQL语法结构也有很大差别。但为了实现信息共享、消除信息孤岛这个“宏伟蓝图”,也只得克服困难,迎难而上了。

用ADO.NET访问ORACLE数据库有很多方式。微软提供了System.Data.OracleClient.dll组建,ORACLE提供了Oracle.DataAccess.Client组件。这两个DLL里面都提供了若干访问ORACLE数据库属性和方法。我的需求不是很复杂,只要能实现用ADO.NET从ORACLE里面读取表数据并简单显示出来就OK了。于是我做了个小测试,主要代码如下:

 1  OracleConnection oracleConn  =   new  OracleConnection();
 2  oracleConn.ConnectionString  =   " Data Source=127.0.0.1;Persist Security Info=True;User ID=apts;Password=apts;Unicode=True " ;
 3   
 4  string  queryString  =   " SELECT * FROM aptsjn.tablename " ;
 5  using (OracleConnection connection  =   new  OracleConnection(oracleConn.ConnectionString))
 6  {
 7      OracleCommand command  =   new  OracleCommand(queryString, connection);
 8      connection.Open();
 9      OracleDataReader reader  =  command.ExecuteReader();
10       try
11      {
12           if  (reader.Read())
13          {
14              Response.Write(reader[ 0 ].ToString());
15          }
16      }
17       finally
18      {
19          reader.Close();connection.Open();  

20    }
21}

代码写好了,这样就可以了吗?一测试,提示" ORA-12514: TNS: 监听进程不能解析在连接描述符中给出的 SERVICE_NAME". 郁闷了。.net里面访问数据库有web.config配置文件,那么访问ORACLE也应该有吧,百度一下,果然需要这个东东:tnsnames.ora。里面是这样的:

 1  # TNSNAMES.ORA Network Configuration File: C:\oracle\ora90\network\admin\tnsnames.ora
 2  # Generated by Oracle configuration tools.
 3 
 4  #sample
 5 
 6  #DATABASENAME  =
 7  #  (DESCRIPTION  =
 8  #    (ADDRESS_LIST  =
 9  #      (ADDRESS  =  (PROTOCOL  =  TCP)(HOST  =   192.168.1.2 )(PORT  =   1521 ))
10  #    )
11  #    (CONNECT_DATA  =
12  #      (SERVICE_NAME  =  servicename)
13  #    )
14  #  )
15 
16  #这里是我定义的
17  APTSLCNEW  =
18    (DESCRIPTION  =
19      (ADDRESS_LIST  =
20        (ADDRESS  =  (PROTOCOL  =  TCP)(HOST  =   192.168 . 1.2 )(PORT  =   1521 ))
21      )
22      (CONNECT_DATA  =
23        (SERVICE_NAME  =  apts)
24      )
25    )
26 
27  …… ……

好了,保存好之后,把上面的 Data Source=127.0.0.1改为Data Source=APTSLCNEW(名字随便起,前后对应就可以了),就这么简单。我试过了,在字符串里面写IP地址会引发错误,不知为何,日后慢慢研究吧。高手莫笑:)。

需要说明的是,ADO.NET访问ORACLE需要安装ORACLE客户端的,否则提示版本错误。客户端我安装的是ORACLE9i,服务器是ORACLE10g,tnsnames.ora文件在C:\Oracle\ora90\network\ADMIN里面。

转载于:https://www.cnblogs.com/ggcfpe/archive/2011/02/23/1962351.html

ado.net访问ORACLE数据库点滴相关推荐

  1. ado.net能访问oracle,利用ADO.NET访问Oracle数据库的实现

    1.前言随着互联网的发展,人们对Web网页的要求越来越多的趋向于动态交互性,而这很大程度上依赖于Web数据库.因为动态交互需要强大的信息系统支持,信息数据以数据库形式表示更容易更新和管理.通过网页如何 ...

  2. oracle 9I 存储过程复制,使用ADO.NET访问Oracle 9i存储过程(上)_oracle

    本文讨论了如何使用 ADO.NET 访问 oracle 存储过程(称为 SQL 编程块)和函数(返回单个值的编程块). 您可以使用以下托管数据提供程序连接到 Oracle 数据库:Microsoft ...

  3. vs使用ado连接oracle,在VS环境下以ADO方式操作Oracle数据库

    利用ADO引擎方式访问Oracle数据库的实现方法: 定义数据库头文件为CDBOperation.h #pragma once #import "C:\Program Files\Commo ...

  4. 使用 ADO.NET 访问 Oracle 9i 存储过程

    使用 ADO.NET 访问 Oracle 9i 存储过程 show toc 欢迎来到 MSDN > 数据 使用 ADO.NET 访问 Oracle 9i 存储过程 发布日期: 5/28/2004 ...

  5. 3种方式限制ip访问Oracle数据库

    墨墨导读:本文来自墨天轮读者投稿,分享了3种限制某个ip或某个ip段访问Oracle数据库的方式,希望对大家有帮助. 一.概述 本文将给大家介绍如何限制某个ip或某个ip段才能访问Oracle数据库 ...

  6. 【方法】如何限定IP访问Oracle数据库

    [方法]如何限定IP访问Oracle数据库 1.1  BLOG文档结构图 1.2  前言部分 1.2.1  导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知 ...

  7. 访问Oracle数据库的四款工具软件介绍

    本文由Markdwon语法编辑器编辑完成. 1. Oracle数据库介绍: 关于Oracle数据库,以及它和MySQL, SQL Server等其他数据库的介绍和区别,可以查看以下来自知乎的链接. h ...

  8. 使用OLE对象访问Oracle数据库

    使用OLE对象访问Oracle数据库 来源: 作者: 2006-08-02 出处:PCDOG.COM 关键字: OLE即对象联接和嵌入技术,使用这一技术,我们在VB中不用任何控件就可轻松访问Oracl ...

  9. 防火墙起不来 oracle,windows防火墙造成不能访问oracle数据库

    我也遇到了这个问题,将完整的解决方法转贴如下,仅供参考! 在防火墙上开放Oracle服务端口 要使Oracle客户端能正常连接到设置有防火墙的安装在windows上的Oracle服务器,单开放一个15 ...

最新文章

  1. 自动化是计算机相关专业英语,自动化专业英语词汇
  2. mysql 性能和安全性_从源码解读Mysql 5.7性能和数据安全性的提升
  3. AngularJS 1.3 支持使用 $digest() 循环实现延迟
  4. Maven常用命令-创建Java项目
  5. OSPF基本概念单与区域配置
  6. JS来推断文本框内容改变事件
  7. Windows的Git Bash使用tree命令
  8. 基于snowflake的序列号生成器
  9. 域名 ip 校验正则表达式
  10. matlab自定义排序
  11. 数据库系统原理与应用教程(039)—— MySQL 查询(一):SELECT 命令的语法分析
  12. 凤凰os安装super su
  13. c++运行时报Floating point exception错误
  14. MINIGUI3.2 设置按钮前景色
  15. java 枚举命名规则,枚举命名惯例 - 复数
  16. vue 悬浮图标_vue实现移动端悬浮窗效果
  17. boost circular_buffer的特性及应用
  18. 用迭代法求Daubechies小波的尺度函数
  19. 新书问答:Software Wasteland
  20. 在Jetson Nano上十行代码实现目标检测(jetson_inference)

热门文章

  1. 1.0数据采集与预处理概述
  2. XMPP与SIP-IM两大协议的对比
  3. 计算机中丢失granny2,修复granny2.dll
  4. Turbo Pascal简介
  5. python实战应用讲解-【numpy科学计算】scikits-statsmodels模块(附python示例代码)
  6. 计算机基础名词(二)
  7. PHY--PUSCH
  8. 如何给一小段视频添加音乐
  9. ICCV2021 | 医学影像等小数据集的非自然图像领域能否用transformer?
  10. [OpenCV] 练习题实现代码 使用 cv.addWeighted 函数在文件夹中创建图像的幻灯片放映,并在图像之间进行平滑过渡