Подтвердить что ты не робот

Подключение к Oracle Database через С#?

Мне нужно подключиться к Oracle DB (внешнему) через Visual Studio 2010. Но я не хочу устанавливать Oracle на свою машину. В моем проекте я ссылался: System.Data.OracleClient. Но это не соответствует потребностям. У меня есть "Oracle ID Developer Developer IDE" , в которой я запускаю SQL-запросы с Oracle db.

У меня есть этот код:

 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. Какие шаги я должен предпринять, чтобы это произошло?

4b9b3361

Ответ 1

Сначала вам нужно скачать и установить 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=<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(); 
    } 
}

Ответ 2

Вы можете использовать Oracle.ManagedDataAccess пакет NuGet (.NET >= 4.0, database >= 10g Release 2).

Ответ 3

Использование Nuget

  1. Щелкните правой кнопкой мыши Project, выберите Manage NuGet packages...
  2. Выберите вкладку Browse, найдите Oracle и установите Oracle.ManagedDataAccess

Oracle NuGet package

  1. В коде используйте следующую команду (Ctrl + . для автоматического добавления директивы using).

  2. Обратите внимание на другую строку DataSource, которая отличается от Java.

    // 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 + ")");
    

Ответ 4

Следующий подход работает с Visual Studio 2013 Update 4 1- В Solution Explorer щелкните правой кнопкой мыши ссылку, затем выберите добавить ссылки 2- Ассембли > Рамки > System.Data.OracleClient > OK и после этого вы можете добавлять с помощью 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);
}
}

Ответ 5

В основном в этом случае System.Data.OracleClient требуется доступ к некоторым файлам oracle, которые не являются частью .Net. Решения:

  • Установите Oracle Client и добавьте расположение буфера в среду пути varaible of windows ИЛИ
  • Копировать oraociicus10.dll(версия Basic-Lite) или aociei10.dll(базовая версия), oci.dll, orannzsbb10.dll и oraocci10.dll из установочной папки клиента oracle в папку bin приложения, чтобы приложение могло найти требуемую dll