44

我需要通过 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 下载任何东西。我应该采取哪些步骤来实现这一点?

4

5 回答 5

55

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

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

你很高兴去追求这个。

using System; 
using Oracle.DataAccess.Client; 

class OraTest
{ 
    OracleConnection con; 
    void Connect() 
    { 
        con = new OracleConnection(); 
        con.ConnectionString = "User Id=<username>;Password=<password>;Data Source=<datasource>"; 
        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(); 
    } 
}
于 2012-09-24T15:40:58.973 回答
24

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

于 2016-03-21T09:57:22.387 回答
22

使用 Nuget

  1. 右键单击项目,选择Manage NuGet packages...
  2. 选择Browse选项卡,搜索Oracle并安装Oracle.ManagedDataAccess

Oracle NuGet 包

  1. 在代码中使用以下命令(Ctrl+.自动添加 using 指令)。

  2. 请注意与 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 + ")");
    
于 2018-06-11T14:21:17.477 回答
1

下一个方法适用于 Visual Studio 2013 Update 4 1- 从解决方案资源管理器中右键单击引用,然后选择添加引用 2- 程序集 > 框架 > System.Data.OracleClient > 确定,然后您可以使用 System.Data 自由添加。应用程序中的 OracleClient 并像处理 Sql Server 数据库一样处理数据库,除了将前缀从 Sql 更改为 Oracle,如 SqlCommand 变为 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);
}
}
于 2015-04-28T08:02:50.220 回答
0

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

  • 安装 Oracle 客户端,并将 bin 位置添加到 Windows 的 Path 环境变量或
  • 将oracle客户端可安装文件夹中的oraociicus10.dll(Basic-Lite版)或aociei10.dll(基本版)、oci.dll、orannzsbb10.dll和oraocci10.dll复制到应用程序的bin文件夹,以便应用程序能够找到所需的dll
于 2015-12-15T13:24:45.040 回答