C# 连接Oracle数据库方法
一:通过System.Data.OracleClient
需要安装Oracle客户端并配置tnsnames.ora,
1. 添加命名空间System.Data.OracleClient引用
using System.Data.OracleClient;
2.连接语句如下
//设置数据库连接语句 用户、密码、ora实例名 string connString = "User ID=sa;Password=123;Data Source=ORA;"; OracleConnection conn = new OracleConnection(connString); try { conn.Open(); Console.WriteLine("连接成功!"+ conn.State.ToString()); Console.ReadLine(); } catch (Exception ex) { Console.WriteLine("连接失败!"+ ex.Message.ToString()); Console.ReadLine(); } finally { conn.Close(); Console.ReadLine(); }
.net 4.0以上版本有些不支持该DLL,也不默认添加,需要添加相关引用才可添加命名空间
二、通过System.Data.OracleClient
需要安装Oracle客户端不需配置tnsnames.ora
1. 添加命名空间System.Data.OracleClient引用
using System.Data.OracleClient;
2.连接语句如下
string connString = "User ID=sa;Password=123;Data Source=(DESCRIPTION = (ADDRESS_LIST= (ADDRESS = (PROTOCOL = TCP)(HOST = 主机名或IP)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = ORCL)))"; OracleConnection conn = new OracleConnection(connString); try { conn.Open(); Console.WriteLine("连接成功!"+ conn.State.ToString()); Console.ReadLine(); } catch (Exception ex) { Console.WriteLine("连接失败!"+ ex.Message.ToString()); Console.ReadLine(); } finally { conn.Close(); Console.ReadLine(); }
三:通过System.Data.OleDb和Oracle公司的驱动
1. 添加命名空间System.Data.OleDb引用
using System.Data.OleDb;
2.连接语句如下
string connString = "Provider=OraOLEDB.Oracle.1;User ID=sa;Password=123;Data Source=(DESCRIPTION = (ADDRESS_LIST= (ADDRESS = (PROTOCOL = TCP)(HOST = 主机名或IP)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = ORCL)))"; OleDbConnection conn = new OleDbConnection(connString); try { conn.Open(); Console.WriteLine("连接成功!" + conn.State.ToString()); Console.ReadLine(); } catch (Exception ex) { Console.WriteLine("连接失败!" + ex.Message.ToString()); Console.ReadLine(); } finally { conn.Close(); Console.ReadLine(); }
如出现报错:未在本地计算机注册“OraOLEDB.Oracle.1”提供程序;
解决方法:
1、确保电脑安装ORACLE客户端程序,非简化版client端;
2、安装时选择Oracle Data Provider for .net 和Oracle Provider for OLE DB
3、人工命令行注册一下 regsvr32 D:appAdministratorproduct11.2.0dbhome_1BINOraOLEDB11.dll
四:通过System.Data.OleDb和微软公司的Oracle驱动
1. 添加命名空间System.Data.OleDb引用
using System.Data.OleDb;
2.连接语句如下
string connString = "Provider=MSDAORA.1;User ID=sa;Password=123;Data Source=(DESCRIPTION = (ADDRESS_LIST= (ADDRESS = (PROTOCOL = TCP)(HOST = 主机名或IP)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = ORCL)))"; OleDbConnection conn = new OleDbConnection(connString); try { conn.Open(); Console.WriteLine("连接成功!" + conn.State.ToString()); Console.ReadLine(); } catch (Exception ex) { Console.WriteLine("连接失败!" + ex.Message.ToString()); Console.ReadLine(); } finally { conn.Close(); Console.ReadLine(); }
1、操作系统已经安装了微软公司的Oracle驱动 例如:C:Program FilesCommon FilesSystemOle DBmsdaora.dll
2、该驱动需要Oracle客户端的三个文件(oraocixe10.dll、oci.dll、ociw32.dll)放在System32下即可
五:使用ODP.NET (推荐)
ODP.NET 是一种驱动程序,可提供对 Oracle 本地、云和自治数据库的快速数据访问。
ODAC安装包如下:
也可在这里下载需要的版本:https://www.oracle.com/database/technologies/dotnet-odacdev-downloads.html
软件安装方式:
1、解压缩到 C:OracleClient1;
2、创建目录 C:OracleClient;
3、以管理员身份运行 CMD.exe,切换运行目录为<1>cd C:/<2>CD OracleClient1;
4、执行语句 install.bat all C:OracleClient ODAC (这个命令相当于,使用C:OracleClient1中install.bat安装程序至 C:OracleClient 全部)
5、设置环境变量 <1> 添加path值:%ORACLE_HOME%与 %ORACLE_HOME%in <2> 新建系统变量,变量名为:ORACLE_HOME,值为:C:OracleClient
6、配置 %ORACLE_HOME% etworkadmin 下 tnsnames.ora 文件,格式如下:
实例名 = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 主机名称或IP)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = 数据库实例名,一般为orcl) ) )
1、如tnsnames.ora 不存在,可在%ORACLE_HOME% etworkadminsample中找到模板,也可自己新建;
2、ODAC具体安装事宜,参见:Oracle数据访问组件:ODAC的使用方法
7、引入命名空间Oracle.DataAccess
using Oracle.DataAccess.Client;
8、连接语句如下
string connString = "DATA SOURCE=实例名;PERSIST SECURITY INFO=True;USER ID=sa;password=123"; OracleConnection conn = new OracleConnection(connString); try { conn.Open(); Console.WriteLine("连接成功!" + conn.State.ToString()); Console.ReadLine(); } catch (Exception ex) { Console.WriteLine("连接失败!" + ex.Message.ToString()); Console.ReadLine(); } finally { conn.Close(); Console.ReadLine(); }
除了以上的方法外,也可以使用第三方工具,例如: Devart,当然它是付费的,这里也就不再赘述了。
题外话:在Visual Studio中使用c# 连接oracle库,一般用两种连接方法,
第一种,微软提供的using System.Data.OracleClient,这个方法在.net 4.0以上版本后逐渐被摒弃掉;
第二种,Oracle自己提供的方法:using Oracle.DataAccess.Client。
前提条件:安装oracle或者Oracle Client,并且添加引用。
右键、引用,在.NET/组件中选择Oracle.DataAccess.Client;
如果找不到则选择 浏览,进入到oracleclient的安装目录寻找 Oracle.Data.Access.dll
(典型目录为:E:appAdministratorproduct11.2.0client_1ODP.NETin2.xOracle.Data>Access.dll)