C# 多种方式连接Oracle


首先我们先在Oracle数据库下建了一个用户叫做lisi,密码为lisi,在这个用户下建立一张表叫做“USERS”,在这个表下新增三个数据。

方式一:利用OleDb连接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


方式二:利用Oracle.ManagedDataAccess.Client方式,在使用前,我们需要先在Nuget中找到Oracle.ManagedDataAccess,然后安装,该方式好处之一是不需要在客户端上安装Oracle客户端,该版本是由Oracle公司开发的,而且微软已经放弃了自己的System.Data.OracleClient方式(下面会有介绍),推荐使用这种方式。

程式码如下:


  #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


方式三:利用odbc方式


 #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


方式四:利用System.Data.OracleClient方式(该方式已过时,不推荐使用)。

虽然已经过时了但是还是可以使用的,代码如下:

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是2013的,插件包在如下地址:

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

当安装好了之后,我们可以使用EF去连接Oralce资料库了,连接方式如下:

然后我们在UI画面中拉取我们需要用到的表,注意使用EF的时候是要设置表主键的,所以我们需要设置USERS这张表的ID为主键,否则没有办法拉取到该表对象。

 代码如下:

  #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 

 执行结果画面:

 

 

综上是我目前所知道的连接Oracle的方式,至于还有其他方式,我暂时可能就不太清楚了。

参考文章:

http://blog.csdn.net/zz155666/article/details/53163115

https://www.cnblogs.com/gguozhenqian/p/4262813.html