通过C#连接到Oracle数据库?

我需要通过Visual Studio 2010连接到Oracle DB(外部)。但我不想在我的机器上安装Oracle。 在我的项目中,我引用了: System.Data.OracleClient 。 但它没有满足需要。 我有一个“Oracle SQL Developer IDE” ,我在其中运行针对oracle db的SQL查询。

到目前为止我有这个代码:

private static string GetConnectionString() { String connString = "host= serverName;database=myDatabase;uid=userName;pwd=passWord"; return connString; } private static void ConnectingToOracle() { string connectionString = GetConnectionString(); using (OracleConnection connection = new OracleConnection()) { connection.ConnectionString = connectionString; connection.Open(); Console.WriteLine("State: {0}", connection.State); Console.WriteLine("ConnectionString: {0}", connection.ConnectionString); OracleCommand command = connection.CreateCommand(); string sql = "SELECT * FROM myTableName"; command.CommandText = sql; OracleDataReader reader = command.ExecuteReader(); while (reader.Read()) { string myField = (string)reader["MYFIELD"]; Console.WriteLine(myField); } } } 

到目前为止,我读了这些博客:

http://st-curriculum.oracle.com/tutorial/DBXETutorial/index.htm

http://blogs.msdn.com/b/kaevans/archive/2009/07/18/connecting-to-oracle-from-visual-studio.aspx

到目前为止,我还没有从Oracle下载任何内容。 我应该采取什么措施来实现这一目标?

首先,您需要从此站点下载并安装ODP http://www.oracle.com/technetwork/topics/dotnet/index-085163.html

安装后添加程序集Oracle.DataAccess.dll的引用。

你很高兴去追求这个。

 using System; using Oracle.DataAccess.Client; class OraTest { OracleConnection con; void Connect() { con = new OracleConnection(); con.ConnectionString = "User Id=;Password=;Data Source="; con.Open(); Console.WriteLine("Connected to Oracle" + con.ServerVersion); } void Close() { con.Close(); con.Dispose(); } static void Main() { OraTest ot= new OraTest(); ot.Connect(); ot.Close(); } } 

您也可以使用Oracle.ManagedDataAccess NuGet包(.NET> = 4.0,数据库> = 10g第2版)。

下一个方法对我来说是使用Visual Studio 2013 Update 4 1-从解决方案资源管理器中右键单击引用,然后选择添加引用2- Assemblies> Framework> System.Data.OracleClient>确定,之后可以使用System.Data自由添加。您的应用程序中的OracleClient和Sql Server数据库一样处理数据库,除了在SqlCommand中将前缀从Sql更改为Oracle成为OracleCommand,例如链接到Oracle XE

 OracleConnection oraConnection = new OracleConnection(@"Data Source=XE; User ID=system; Password=*myPass*"); public void Open() { if (oraConnection.State != ConnectionState.Open) { oraConnection.Open(); } } public void Close() { if (oraConnection.State == ConnectionState.Open) { oraConnection.Close(); }} 

并使用存储过程执行一些命令,如INSERT,UPDATE或DELETE,我们可以使用以下方法

 public void ExecuteCMD(string storedProcedure, OracleParameter[] param) { OracleCommand oraCmd = new OracleCommand(); oraCmd,CommandType = CommandType.StoredProcedure; oraCmd.CommandText = storedProcedure; oraCmd.Connection = oraConnection; if(param!=null) { oraCmd.Parameters.AddRange(param); } try { oraCmd.ExecuteNoneQuery(); } catch (Exception) { MessageBox.Show("Sorry We've got Unknown Error","Connection Error",MessageBoxButtons.OK,MessageBoxIcon.Error); } } 

基本上在这种情况下, System.Data.OracleClient需要访问一些不属于.Net的oracle dll。 解决方案:

  • 安装Oracle客户端,并将bin位置添加到Windows OR的Path环境中
  • 将oraociicus10.dll(Basic-Lite版本)或aociei10.dll(基本版),oci.dll,orannzsbb10.dll和oraocci10.dll从oracle客户端可安装文件夹复制到应用程序的bin文件夹,以便应用程序能够找到所需的dll

3个步骤:

  1. 右键单击项目,选择“管理NuGet包…”
  2. 选择“浏览”选项卡,搜索“Oracle”并安装“Oracle.ManagedDataAccess” Oracle NuGet包
  3. 使用以下代码( Ctrl + 自动添加using指令),注意与Java比较的不同DataSource字符串:

     // create connection OracleConnection con = new OracleConnection(); // create connection string using builder OracleConnectionStringBuilder ocsb = new OracleConnectionStringBuilder(); ocsb.Password = "autumn117"; ocsb.UserID = "john"; ocsb.DataSource = "database.url:port/databasename"; // connect con.ConnectionString = ocsb.ConnectionString; con.Open(); Console.WriteLine("Connection established (" + con.ServerVersion + ")");