Oracle:ODP.NET Managed_风随星月的博客-程序员秘密

技术标签: C#  编程语言  

转自: http://www.cnblogs.com/yjmyzz/archive/2013/11/01/3400999.html 

“ODP.NET Managed”发布已经有一段时间了,近期正好有一个新项目,想尝试用一下,参考园子里的文章:《.NET Oracle Developer的福音——ODP.NET Managed正式推出》 到Oracle官网 下载 ODP.NET_Managed121010.zip 大约1.9M,解压后目录结构如下:

核心的dll,就是common目录下的Oracle.ManagedDataAccess.dll,不象ODP.NET以前的版本,这次终于不用区分x86/x64版本了,不管是32位还是64位,都是同一个dll。

至于manged/x64、managed/x86这二个目录,是用来向.NET x86或.NET x64的GAC注册程序集的,运行相关的configure.bat后,会自动将common中的Oracle.ManagedDataAccess.dll放入GAC,这样在vs中添加引用时,能自动找到GAC中的相关命名空间

运行了configure.bat的机器上,应用程序的bin目录下不必包括Oracle.ManagedDataAccess.dll,就能正常运行了。

注:configure.bat这一步是可选的,添加引用时,完全也可以通过直接浏览Oracle.ManagedDataAccess.dll所在位置,将该dll复制到bin目录下.

下面是最基本的使用代码:

复制代码
 1 using System;
 2 using System.Data;
 3 using Oracle.ManagedDataAccess.Client;
 4 
 5 namespace ODP.NET
 6 {
 7     class Program
 8     {
 9         static void Main(string[] args)
10         {
11             OracleConnection conn = null;
12             try
13             {
14                 conn = OpenConn();
15                 var cmd = conn.CreateCommand();
16                 cmd.CommandText = "select * from s_awb_master where rownum=1";
17                 cmd.CommandType = CommandType.Text;
18                 var reader = cmd.ExecuteReader();
19                 while (reader.Read())
20                 {
21                     Console.WriteLine(string.Format("AwbPre:{0},AwbNo:{1}", reader["AwbPre"], reader["AwbNo"]));
22                 }
23             }
24             catch (Exception ex)
25             {
26                 Console.WriteLine(ex.Message);
27             }
28             finally
29             {
30                 CloseConn(conn);
31             }
32             Console.Read();
33         }
34 
35 
36         static OracleConnection OpenConn()
37         {
38             OracleConnection conn = new OracleConnection();
39             conn.ConnectionString = "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=***.***.***.***)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=***)));Persist Security Info=True;User ID=***;Password=***;";
40             conn.Open();
41             return conn;
42         }
43 
44         static void CloseConn(OracleConnection conn)
45         {
46             if (conn == null) { return; }
47             try
48             {
49                 if (conn.State != ConnectionState.Closed)
50                 {
51                     conn.Close();
52                 }
53             }
54             catch (Exception e)
55             {
56                 Console.WriteLine(e.Message);
57             }
58             finally
59             {
60                 conn.Dispose();
61             }
62         }
63     }
64 }
复制代码

最后附上dll下载:http://files.cnblogs.com/yjmyzz/Oracle.ManagedDataAccess.zip 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/fengxing11/article/details/52470856

智能推荐

Angelar与VueJs的简单对比_SHiny-Jun的博客-程序员秘密

vue的优点:    1.简单(vue的目标就是通过尽可能简单的api实现响应的数据绑定和组合的视图组件,而且vue的开发者是中国人,文档都是中文,所以很好入门)    2.灵活(vue官方提供了构建工具来协助你构建项目,但它不限于你去如何构建)        ps:相对于AngularCli,它包办了所有的非开发工作,如编译、构建等    3.性能(vue尺寸非常小只有10几k,vue用了类似于...

【转载】IDEA选择JDK版本_NAVY_msj的博客-程序员秘密

idea作为功能强大,又好用的工具,广受青睐。但是功能强大势必有个问题,就是内容太多,不易掌握。今天分享的问题就是idea的jdk版本设置有哪几个地方。总共5个地方。1、工程编译用的jdk,如果提示编译的jdk版本不符合要求,就要修改这边的:2、其他的jdk版本设置:3、其他的jdk版本设置:4、其他的jdk版本设置:5、其他的jdk版本设置:...

Java线程上下文-ThreadLocal的那些事_唐影若凡的博客-程序员秘密

声明:原创文章,转载请注明出处。https://www.jianshu.com/p/6341cfa5c3cd一、概述ThreadLocal: 通常被称作线程本地变量或者线程本地存储。其含义是ThreadLocal为变量在每个线程中都创建一个副本,则每个线程可以访问自身内部的副本变量。 概念总是抽象而且晦涩的,我们从两个例子说起。1、对象间/方法间跨层传递如下图,有个多层调...

2021-12-26 shiro-core JdbcRealm源码分析(一)_慌张的唐同学的博客-程序员秘密

[email protected]的类继承关系图JdbcRealm:允许通过 JDBC 调用进行身份验证和授权的领域。 默认查询建议一种潜在的模式,用于检索用户的密码以进行身份​​验证,以及查询用户的角色和权限。 可以通过设置领域的查询属性来覆盖默认查询。如果身份验证和授权的默认实现无法处理您的架构,则可以对此类进行子类化并覆盖适当的方法。 (通常是doGetAuthenticationInfo(AuthenticationToken) 、 getRoleNamesForUser(Conn

antd 日期时间选择_antd日期选择器禁止选择当天之前的时间操作_weixin_39621235的博客-程序员秘密

使用disabledDate属性(不可选择的日期)在js中定义函数并返回//限制当天之前的日期不可选disabledDate(current) {return current && current //return current && current < moment().endOf(‘day');当天之前的不可选,包括当天}补充知识:antd DatePi...

随便推点

如何将一个长字符串分割成等分的几段(二)_banyu1967的博客-程序员秘密

转载于:https://www.cnblogs.com/MyFlora/archive/2012/04/11/2441819.html

android 7.0版本特性,Android 7.0 特性_彭迅鹏xp的博客-程序员秘密

8种机械键盘轴体对比本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?FileProvider在Android7.0过后 应用之间 Activity之间传递File路径的时候需要提供权限:需要申明一个Provider来提供content://的uri格式;申明一个FileProvider......android:name="android.support.v4.content.FileP...

golang日志库glog解析_glog清除日志的过程中又有新的日志信息写入_进击云原生的博客-程序员秘密

golang日志库glog解析、vlog简介、每天自动切割日志文件、 设置等级控制日志的输出

pointnet-cvpr2017-3D_point_machine_learning_Little_sky_jty的博客-程序员秘密

Abstructwe design a novel type of neural network that directly consumes point clouds called pointenet, provides a unified architecture for applications range from object classsfication, part segmenta...

【智能法律】从律师到法律机器人,法律行业未来二十年的机遇和挑战 | AI观察_未来几年法律专业面临的主要挑战_产业智能官的博客-程序员秘密

作者:曹建峰     来源:腾讯研究院 授权 产业智能官 转载                 曹建峰     腾讯研究院法律研究中心高级研究员1古老行业的时代挑战法律是一个古老的行业。古罗马法学家乌尔比安曾说,法乃善良正义之术。这代表了人们对

正则表达式预编译_misthee的博客-程序员秘密

使用正则表达式的预编译功能,可以有效加快正则匹配速度。Pattern要定义为static final静态变量,以避免执行多次预编译。示例:【错误用法】// 没有使用预编译private void func(...) { if (Pattern.matches(regexRule, content)) { ... }}// 多次预编译private v...