通过网上了解到.net连接Oracle主要有3种方法。
(1)System.Data.OracleClient
微软的System.Data.OracleClient可以直接引用,但是VS会提示“System.Data.OracleClient.OracleConnection”已过时。
(2)Oracle.DataAccess.Client
也叫ODP.net,是Oracle提供的数据库访问类库,不用安装Oracle客户端,只需要在oracle安装目录下找到Oracle.DataAccess.dll添加引用,但是缺点是要区分x86/x64版本。
(3)Oracle.ManagedDataAccess.Client
也是Oracle提供的数据库访问类库,无需安装oracle客户端,也不需要区分x86/x64版本,直接引用Oracle.ManagedDataAccess.dll 即可。

下面是用使用Oracle.ManagedDataAccess.Client连接Oracle例子:
1、配置Oracle连接字符串
本次例子是WinForm,app.config的Oracle连接字符串配置如下,关键信息:IP地址、服务名、用户名、密码。

<add key="OracleConn" value="Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.2)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=orcl)));Persist Security Info=True;User ID=user;Password=123456"/>

2、简单写了个数据库访问类OracelHelper.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Oracle.ManagedDataAccess.Client;
using System.Data; namespace demo
{
public class OracelHelper
{
private static readonly string connectionString = System.Configuration.ConfigurationManager.AppSettings["OracleConn"].ToString(); public static OracleConnection GetConn()
{
var conn = new OracleConnection(connectionString);
conn.Open();
return conn;
} public static int ExecuteNonQuery(string sql)
{
using (var conn = GetConn())
{
var cmd = new OracleCommand(sql, conn);
int result = cmd.ExecuteNonQuery();
return result;
}
} public static int ExecuteScalar(string sql)
{
using (var conn = GetConn())
{
var cmd = new OracleCommand(sql, conn);
object o = cmd.ExecuteScalar();
return Convert.ToInt32(o.ToString());
}
} public static OracleDataReader ExecuteReader(string sql)
{
var conn = GetConn();
var cmd = new OracleCommand(sql, conn);
var myReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
return myReader;
} public static DataSet ExecDataSet(string sql)
{
using (var conn = GetConn())
{
var cmd = new OracleCommand(sql, conn);
OracleDataAdapter da = new OracleDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds);
return ds;
}
}
}
}

3、如果是使用Dapper,可参考上篇文章“.net4.0使用Dapper操作MySql”,部分代码稍微修改如下

(1)Dapper封装

 public class DapperHelper
{
public static OracleConnection OracleConnection()
{
string oracleConnectionStr = System.Configuration.ConfigurationManager.AppSettings["OracleConn"].ToString();
var connection = new OracleConnection(oracleConnectionStr);
connection.Open();
return connection;
}
}

(2)使用Dapper进行select查询

using (IDbConnection conn = DapperHelper.OracleConnection())
{
string sqlCommandStr = @"select * from user";
List<User> userList = conn.Query<User>(sqlCommandStr).ToList();
//todo
}

.net连接Oracle的更多相关文章

  1. 一起学微软Power BI系列-使用技巧(1)连接Oracle与Mysql数据库

    说起Oracle数据库,以前没用过Oracle不知道,但是这1年用Oracle后,发现真的是想狂吐槽,特别是那个.NET驱动和链接字符串,特别奇葩.总归是和其他数据库不一样,标新立异,不知道为何.另外 ...

  2. Linux下部署ASP.NET服务连接oracle遇到的问题记录

    一.如何卸载MONO Q:mono是linux系统上跨平台软件,卸载它有两种方式: 1.知道mono安装路径,安装原来的路径直接覆盖安装(最为简单): 2.不知道mono安装路径,首先通过sudo f ...

  3. Java JDBC Thin Driver 连接 Oracle 三种方法说明(转载)

    一.JDBC 连接Oracle 说明 JDBC 的应用连接Oracle 遇到问题,错误如下: ORA-12505,TNS:listener does not currently know of SID ...

  4. 关于ADO.NET连接ORACLE,使用ODAC连接中的一些问题

    ADO.NET连接ORACLE时,用到ODAC组件时,有几点注意的. 1.安装的具体方法见:http://jingyan.baidu.com/article/e4511cf336ce872b845ea ...

  5. Qgis连接Oracle

    CMake编译中选择编译Oracle一项以后,编译的qgis才会有连接Oracle数据库的功能. 编译qgis以后,可以通过添加矢量图层中选择Oracle数据库,或是添加Oracle空间图层,或是添加 ...

  6. IIS 连接 oracle报Oracle.DataAccess版本错误解决办法

    通过IIS连接oracle时报“Could not load file or assembly 'Oracle.DataAccess, Version=2.112.3.0, Culture=neutr ...

  7. 使用Navicat连接Oracle数据时的一些问题,连接时错误:ORA-28547,新建用户后连接时错误:ORA-01017

    发现Navicat作为一款连接数据库的工具确实很好用,可视化的界面看着舒服很多,下面说说我今天在连接Oracle数据库时的一些问题: 1.安装好Oracle后直接用Navicat是连接不上的,会出现如 ...

  8. mac版本navicat连接oracle报错ORA-21561

    最近电脑更换成mac,很多软件都和win不一样了,正在慢慢适应,连接oracle原来用的客户端是pl/sql develop,蛋疼的是没有了mac版本, 用了navicat,具体设置如下 1.新建连接 ...

  9. Java连接Oracle database小结

    利用jdbc连接Oracle数据库,首先得选对jdbc的版本. jdk6需要ojdbc6.jar这个包.如果选错的话,调用isValid()这个方法时,有可能有这个异常: Exception in t ...

  10. 不安装oracle客户端,用plsql连接oracle

    常用的Oracle开发的工具有SQL Developer和PL/SQL Developer,个人感觉前者虽然跨平台性优于后者,但比较大(大于300M)占用资源,而且用户体验也一般,而后者相对就小很多( ...

随机推荐

  1. 【JS简洁之道小技巧】第一期 扁平化数组

    介绍两种方法,一是ES6的flat,简单粗暴.二是递归,也不麻烦. flat ES6自带了flat方法,用于使一个嵌套的数组扁平化,默认展开一个嵌套层.flat方法接收一个数字类型参数,参数值即嵌套层 ...

  2. Redis分布式锁的实现原理

    原文链接:https://mp.weixin.qq.com/s/y_Uw3P2Ll7wvk_j5Fdlusw

  3. Linux 打开端口方法

    关闭防火墙:service iptables stop 开启防火墙:service iptables start 防火墙状态:service iptables status 永久关闭:chkconfi ...

  4. 设计模式-Strategy Strategy将算法封装到类中,通过组合的方式 将具体算法的实现在组合对象中实现

    以下代码来源: 设计模式精解-GoF 23种设计模式解析附C++实现源码 //strategy.h #pragma once class Strategy { public: Strategy(); ...

  5. 基础知识 Asp.Net MVC EF各版本区别

    原文:https://www.cnblogs.com/liangxiaofeng/p/5840754.html 2009年發行ASP.NET MVC 1.0版 2010年發行ASP.NET MVC 2 ...

  6. 【洛谷5072】[Ynoi2015] 盼君勿忘(莫队)

    点此看题面 大致题意: 一个序列,每次询问一个区间\([l,r]\)并给出一个模数\(p\),求模\(p\)意义下区间\([l,r]\)内所有子序列去重后值的和. 题意转化 原来的题意看起来似乎很棘手 ...

  7. Codeforces Round 596 题解

    万幸的是终于碰上了一场上分好场. 不幸的是一开始差点不会 A. 万幸的是想了个不那么稳的结论过了 pretest. 不幸的是罚时很高,而且慌得一比. 万幸的是然后半个小时内把 B 和 C 码了. 不幸 ...

  8. Tree-Shaking性能优化实践 - 原理篇

    Tree-Shaking性能优化实践 - 原理篇   一. 什么是Tree-shaking 先来看一下Tree-shaking原始的本意 上图形象的解释了Tree-shaking 的本意,本文所说的前 ...

  9. Ansible 日常使用技巧 - 运维总结

    Ansible默认只会创建5个进程并发执行任务,所以一次任务只能同时控制5台机器执行.如果有大量的机器需要控制,例如20台,Ansible执行一个任务时会先在其中5台上执行,执行成功后再执行下一批5台 ...

  10. MongoDB for OPS 02:复制集 RS 配置

    写在前面的话 对于生产环境而言,除非是非常不重要的业务,且该业务允许我们出现一定时间的停机,我们一般才会使用单节点,且该单节点必须要有完善的备份手段. RS 复制集 我们这里采取一主两从的方式搭建复制 ...