C#连接Oracle数据库使用Oracle.ManagedDataAccess.dll
作者:上青天揽月 发布时间:2024-01-20 11:52:53
在刚接触C#的时候由于公司使用的就是Oracle数据库,那么C#怎么连接Oracle数据库就成了首要去掌握的知识点了。在那时没有ODP.NET,但visual studio却对Oralce数据库的调用进行了集成,就是下图中的这个,尽管现在使用这个的时候visual studio提醒过时的,但在那时却是非常好用的。
为什么现在visual studio中这个程序集依然能使用,有ODP.NET,单单要拿出Oracle.ManagedDataAccess.dll进行本文的重点呢?
1、visual studio中提醒过时,因为微软和甲骨文存在数据库的竞争关系,并且从.NET的更新来看这个程序集没有再更新过,对于数据库一直在更新而调用的程序集一直不更新敢用下去么?还有一个我认为非常重要的原因就是使用这个程序集,摆脱不了每一个运行程序的客户机上都要去安装Oracle客户端的事实,试想一下,如果用户数量巨大的时候,安装客户端的工作量就相当的大,很耗费资源;
2、甲骨文后来出了ODP.NET,各种资料以及官网上都说需要安装ODP.NET,然后引用Oracle.ManagedDataAccess.dll,他和visual studio中的程序集最大的区别在于会随着数据库更新,是oracle官方出的驱动;
3、其实经过测试,ODP.NET的安装完全是没有必要的,直接在网上下载一个Oracle.ManagedDataAccess.dll,按如下方式引用即可,使用此种方式减少了ODP.NET的安装,无视操作系统的位数,最重要的是减少了Oracle客户端的安装;
那在哪里下载Oracle.ManagedDataAccess.dll呢?如果Oracle.ManagedDataAccess.dll有更新怎么知道呢?这个时候全宇宙最强大开发工具登场了!
安装完成就可以撸代码了,并且如果有更新可以随时能看到。并且在编程方面和以前使用System.Data.OracleClient程序集没有多大的不同,基本上拿以前使用System.Data.OracleClient程序集的代码做少许的改动即可。
1、使用了连接字符串,而不是用oracle客户端的服务名了;
2、几个命名空间的变化;
下面是对数据库常用操作的封装
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Configuration;
using Oracle.ManagedDataAccess.Client;
using System.Data;
using System.IO;
using System.Collections;
using System.Diagnostics;
using Oracle.ManagedDataAccess.Types;
namespace OracleDemo
{
public class OracleHelper
{
private static string connStr = "User Id=admin;Password=123;Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.0.1)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=test)))";
#region 执行SQL语句,返回受影响行数
public static int ExecuteNonQuery(string sql, params OracleParameter[] parameters)
{
using (OracleConnection conn = new OracleConnection(connStr))
{
conn.Open();
using (OracleCommand cmd = conn.CreateCommand())
{
cmd.CommandText = sql;
cmd.Parameters.AddRange(parameters);
return cmd.ExecuteNonQuery();
}
}
}
#endregion
#region 执行SQL语句,返回DataTable;只用来执行查询结果比较少的情况
public static DataTable ExecuteDataTable(string sql, params OracleParameter[] parameters)
{
using (OracleConnection conn = new OracleConnection(connStr))
{
conn.Open();
using (OracleCommand cmd = conn.CreateCommand())
{
cmd.CommandText = sql;
cmd.Parameters.AddRange(parameters);
OracleDataAdapter adapter = new OracleDataAdapter(cmd);
DataTable datatable = new DataTable();
adapter.Fill(datatable);
return datatable;
}
}
}
#endregion
}
}
以下代码是调用部分
string sqlString = "Select a.col1,a.col2 From test a Where a.id=:id";
DataTable dt = OracleHelper.ExecuteDataTable(sqlString,new OracleParameter(":id",1));
程序编写完成,生成完成后,目录大概如下:
这时候拷贝Debug文件夹到目标客户电脑上即可直接运行了(前提是目标客户电脑上有.NET Framework),完全摆脱安装Oracle客户端。
来源:http://www.cnblogs.com/goldenbridge/p/7812081.html
猜你喜欢
- 前言本来打算写的标题是XPath语法,但是想了一下Python中的解析库lxml,使用的是Xpath语法,同样也是效率比较高的解析方法,所以
- 前言我们经常需要将大量数据保存起来以备后续使用,数据库是一个很好的解决方案。在众多数据库中,MySQL数据库算是入门比较简单、语法比较简单,
- 加载模型并查看网络加载模型,以vgg19为例。打开终端> pythonPython 3.7.2 (tags/v3.7.2:9a3ffc
- 前言本文主要给大家介绍了关于Mysql元数据生成Hive建表语句注释脚本的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的
- 蓝色混迹多年,偷师学艺不少,这次花了2天时间写了点东西发出来送给需要的吧。先放个图片,我改下代码。 重构完成 IE 6 
- 一、yield迭代器在python深度学习模型读取数据时,经常遇到yield,互联网搜索后,将比较容易理解的说明记录一下。二、使用步骤1.引
- 有没有想过用尺子来直接量网页上的区块间距,文字行高?屏幕标尺就是干这个的。这个功能非常适合F2E在调试样式尺寸的时候使用。打开屏幕标尺,屏幕
- 在默认情况下,MySQL搜索不区分大小写(但某些字符集始终区分大小写,如czech)。这意味着,如果你使用col_name LIKE
- 文件可以传输,但是对比传输前后的文件:socket_test.txt,末尾有一些不一致服务端代码:#!/usr/bin/python# -*
- 扰动的鲁棒性在之前我们讨论权重衰减(L2正则化)时看到的那样,参数的范数也代表了一种有用的简单性度量。简单性的另一个有用角度是平滑性,即函数
- 音频预处理这一讲主要介绍些音频基本处理方式,为接下来的语音识别打基础。三种播放音频的方式使用 python 播放音频有以下几种方式:os.s
- 我们可以通过高级API更简洁地实现多层感知机。import torchfrom torch import nnfrom d2l import
- 题目:轮盘分为三部分: 一等奖, 二等奖和三等奖;轮盘转的时候是随机的,如果范围在[0,0.08)之间,代表一等奖,如果范围在[0.08,0
- 下列语句部分是Mssql语句,不可以在access中使用。SQL语句分类:DDL—数据定义语言(CREATE,ALTER,DROP,DECL
- 一 概述Python生态系统的一些核心基础数据分析库:NumPy:支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库,包含
- 在用Matplotlib库绘制折线图的时候遇到一个问题,当定义一个x轴数组时,plot绘制折线图时,x轴并不会按照我们定义的数组的顺序去排列
- kali添加开机自启采用systemd的方法,kali默认是没有rc.local的,需要自己创建。本方法也适用于ubuntu 18.04 6
- 之前用Crystal做了一个数字转English Word的Formula刚刚心血来潮, 大半个晚上写了JS版本的数字转换, 由于JS的Bu
- 目录Counter类创建计数值的访问与缺失的键计数器的更新键的删除elements()most_common([n])fromkeys浅拷贝
- 翻译:ShiningRay @ Nirvana Studio作者:Douglas Crockford来源:http://www.crockf