澳门新浦京娱乐场网站-www.146.net-新浦京娱乐场官网
做最好的网站

连接Oracle数据库的方法,多种方式连接Oracle

废话相当的少说一向正题:

在刚接触C#的时候由于集团利用的正是Oracle数据库,那么C#怎么连接Oracle数据库就成了关键去调控的知识点了。在那时候未有ODP.NET,但visual studio却对Oralce数据库的调用进行了归总,正是下图中的那么些,就算以往采用那个的时候visual studio提示过时的,但在当场却是相当好用的。澳门新浦京娱乐场网站 1

第一介绍下支付景况:WIn10 64bit Visual Studio 贰零壹肆 Oracle10ClientWin32(只是客商端,假如设置任何数据库也是能够的)

首先大家先在Oracle数据库下建了多个客户叫做lisi,密码为lisi,在这里个顾客下树立一张表叫做“USE景逸SUVS”,在此个表下新扩充几个数据。

为啥将来visual studio中那些顺序集依旧能应用,有ODP.NET,单单要拿出Oracle.ManagedDataAccess.dll进行本文的要害呢?

现阶段通晓C#中连接Oracle数据库的主意有3种,遍布是微软的System.Data.OracleClient,Oracle的Oracle.DataAccess.Client和Oracle的Oracle.ManagedDataAccess.dll(最优)

澳门新浦京娱乐场网站 2

1、visual studio中提拔过时,因为微松软宋体存在数据库的竞争关系,况兼从.NET的更新来看那些顺序集并未有再校订过,对于数据库一贯在更新而调用的程序集一向不更新敢用下去么?还可能有一个自个儿觉着不行关键的来由便是应用那么些程序集,蝉退不了每叁个运路程序的客户机上都要去安装Oracle顾客端的实际,试想一下,假如顾客数量庞大的时候,安装顾客端的工作量就一定的大,很开支能源;

1.微软的System.Data.OracleClient能够一贯引用,但是VS会提示“System.Data.OracleClient.OracleConnection”已不适时宜,那标记微软塌塌睦都不建议利用了,所以知道就足以了,不必选拔

连接Oracle数据库的方法,多种方式连接Oracle。 

连接Oracle数据库的方法,多种方式连接Oracle。2、草书后来出了ODP.NET,种种材质以致官英特网都在说须要安装ODP.NET,然后援用Oracle.ManagedDataAccess.dll,他和visual studio中的程序集最大的分裂在于会随着数据库更新,是oracle官方出的驱动;

2.C#利用Oracle.DataAccess.Client也叫ODP.net,他是Oracle提供的数据库访谈类库,其功效和频率上都具有保障,它还恐怕有一个极度常有助于特性:在顾客端上,可以不用安装Oracle顾客端,直接拷贝就能够使用。由于微软在.net framework4中会将System.Data.OracleClient.dll deprecated,而且就访谈功效和速度来讲,System.Data.OracleClient.dll与Oracle.DataAccess.dll相比较,微软的真的并未有oracle提供的类库有优势,所以本人遗弃了动用多年的System.Data.OracleClient.dll,代替他的是odp.net。可是odp.net的亮点不仅仅那几个,还包罗:
1)不在安装顾客端也能访谈服务器上的oracle(借使Application Server与DB Server 分开卡塔 尔(阿拉伯语:قطر‎
2)不必要配置TnsNames.Ora文件

方式一:利用OleDb连接Oracle。

3、其实通过测量试验,ODP.NET的设置完全部是从未须求的,直接在互连网下载二个Oracle.ManagedDataAccess.dll,按如下方式引用就能够,使用此种形式减少了ODP.NET的设置,无视操作系统的位数,最关键的是压缩了Oracle客商端的安装;

实际的选用办法请参谋那位英雄的  

 1    #region  使用OleDb方式
 2             Console.WriteLine("OleDb方式");
 3             OleDbConnection oledbConnection = new OleDbConnection("Provider=OraOLEDB.Oracle; Data Source=MLDN; User Id=lisi; Password=lisi;");
 4             OleDbCommand oledbCommand = new OleDbCommand();
 5             oledbCommand.CommandText = "select * from USERS";
 6             oledbCommand.CommandType = CommandType.Text;
 7             oledbCommand.Connection = oledbConnection;
 8             oledbConnection.Open();
 9             var oledbReader = oledbCommand.ExecuteReader();
10             while (oledbReader.Read())
11             {
12                 Console.WriteLine("姓名:" oledbReader[1]);
13             }
14             oledbConnection.Close();
15   #endregion

澳门新浦京娱乐场网站 3

再有那位大侠的 

主意二:利用Oracle.ManagedDataAccess.Client形式,在采纳前,我们须求先在Nuget中找到Oracle.ManagedDataAccess,然后安装,该方法好处之一是无需在顾客端上设置Oracle顾客端,该版本是由Oracle集团支付的,并且微软早已放任了友好的System.Data.OracleClient格局(上边会有介绍卡塔尔国,推荐使用这种方式。

澳门新浦京娱乐场网站 4

要是项目要从System.Data.OracleClient.OracleConnection转Oracle.DataAccess.Client时,只供给在oracle 安装目录下 找到 Oracle.DataAccess.dll加多引用,后 using Oracle.DataAccess.Client;
任何的都不用动,就能够。
总是字符串中 如有 用的是 user=xxx 就改成user id=xxx把原来 Using 的System.Data.OracleClient去掉就可以。

澳门新浦京娱乐场网站 5

澳门新浦京娱乐场网站 6

澳门新浦京娱乐场网站,3.要害学习最终大器晚成种Oracle.ManagedDataAccess.dll,第三种的亮点比超级多,不过也可能有通病,就是要区分用区分x86/x64版本。

程式码如下:

 

下载dll和应用方法参照他事他说加以考查这位英雄的  

  #region OracleConnection
            //OracleConnection connection = new OracleConnection("Password=lisi;User ID=lisi;Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.229.138)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=****)))");没有安装客户端的话,可以使用这种方式
            Console.WriteLine("Oracle.ManagedDataAccess.Client方式");
            OracleConnection oralceConnection = new OracleConnection("Data Source=MLDN; User Id=lisi; Password=lisi;");
            oralceConnection.Open();
            OracleCommand oracleCommand = new OracleCommand();
            oracleCommand.CommandText = "select * from USERS";
            oracleCommand.CommandType = CommandType.Text;
            oracleCommand.Connection = oralceConnection;
            var oracleReader = oracleCommand.ExecuteReader();
            while (oracleReader.Read())
            {
                Console.WriteLine("姓名:"   oracleReader[1]);
            }
            oralceConnection.Close();
            #endregion

这在哪儿下载Oracle.ManagedDataAccess.dll呢?假若Oracle.ManagedDataAccess.dll有更新怎么知道吧?那时全宇宙最有力开荒工具上场了!

 

方式三:利用odbc方式

澳门新浦京娱乐场网站 7

            OracleConnection con = new OracleConnection(ConfigurationManager.ConnectionStrings["OracleConnString"].ToString());
            con.Open();
            OracleCommand cmd = new OracleCommand(cmdString, con);
            OracleDataAdapter oda = new OracleDataAdapter();
            oda.SelectCommand = cmd;
            oda.Fill(ds);
            GridView1.DataSource = ds;
            GridView1.DataBind();
        #region odbc

            Console.WriteLine("odbc方式");
            OdbcConnection odbcConnection = new OdbcConnection("Driver={Microsoft ODBC for Oracle};Server=MLDN;Uid=lisi;Pwd=lisi;");
            odbcConnection.Open();
         OdbcCommand odbcCommand = new OdbcCommand();
         odbcCommand.CommandText = "select * from USERS";
         odbcCommand.CommandType = CommandType.Text;
         odbcCommand.Connection = odbcConnection;
         var odbcReader= odbcCommand.ExecuteReader();

         while (odbcReader.Read())
         {
             Console.WriteLine("姓名:"   odbcReader[1]);
         } 
            odbcConnection.Close();

#endregion

澳门新浦京娱乐场网站 8

 

 

澳门新浦京娱乐场网站 9

方法四:利用System.Data.OracleClient情势(该情势已不适那时候宜,不引入应用卡塔尔国。

安装完毕就能够撸代码了,並且只要有改正能够天天能收看。况兼在编制程序方面和之前使用System.Data.OracleClient程序集并未有多大的比不上,基本上拿以前使用System.Data.OracleClient程序集的代码做简单的改换就可以。

澳门新浦京娱乐场网站 10

1、使用了连接字符串,并不是用oracle顾客端的服务名了;

就算已经过时领悟而如故得以行使的,代码如下:

2、多少个命名空间的浮动;

 1       #region
 2 
 3             Console.WriteLine("System.Data.OracleClient方式");
 4          System.Data.OracleClient.OracleConnection clientConnection = new System.Data.OracleClient.OracleConnection();
 5          clientConnection.ConnectionString = " Data Source=MLDN; User Id=lisi; Password=lisi;";
 6          System.Data.OracleClient.OracleCommand clientCommand = new System.Data.OracleClient.OracleCommand();
 7 
 8          clientCommand.CommandText = "select * from USERS";
 9          clientCommand.Connection = clientConnection;
10          clientCommand.CommandType = CommandType.Text;
11          clientConnection.Open();
12          var clientReader = clientCommand.ExecuteReader();
13          while (clientReader.Read())
14          {
15 
16              Console.WriteLine("姓名:"   clientReader[1]);
17          }
18          clientConnection.Close();
19             #endregion

上面是对数据库常用操作的包装

 情势五:使用能够连接Oracle的Entity Framework工具,在选用前需求先安装叁个插件包,笔者的VS是二零一三的,插件包在如下地址:

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
    }
}

 http://www.oracle.com/technetwork/cn/topics/dotnet/downloads/odacmsidownloadvs2013-2756823-zhs.html

以下代码是调用部分

当安装好了未来,我们能够动用EF去连接Oralce资料库了,连接格局如下:

                string sqlString = "Select a.col1,a.col2 From test a Where a.id=:id";
                DataTable dt = OracleHelper.ExecuteDataTable(sqlString,new OracleParameter(":id",1));

澳门新浦京娱乐场网站 11

 

澳门新浦京娱乐场网站 12

次第编写制定作而成功,生成完毕后,目录差相当的少如下:

然后大家在UI画面中拉取我们须要运用的表,注意选拔EF的时候是要安装表主键的,所以大家要求设置USEKoleosS那张表的ID为主键,否则未有章程拉取到该表对象。

澳门新浦京娱乐场网站 13

澳门新浦京娱乐场网站 14

这儿拷贝Debug文件夹到指标顾客Computer上就可以直接运维了(前提是指标客商计算机上有.NET Framework卡塔尔,完全超脱安装Oracle客商端。

 代码如下:

 

  #region Oracle EF
         Console.WriteLine("Oracle EF方式");
         Entities db = new Entities();
         var users = db.USERS.ToList();
         foreach (var item in users)
         {
             Console.WriteLine("姓名:"   item.NAME);
         }
     #endregion 

 

 执行结果画面:

 澳门新浦京娱乐场网站 15

 

综上是自家当下所知道的连接Oracle的诀窍,至于还只怕有其余艺术,小编一时半刻可能就不太知道了。

参照文章:

 

本文由澳门新浦京娱乐场网站发布于www.146.net,转载请注明出处:连接Oracle数据库的方法,多种方式连接Oracle