Подключение к Oracle Database через C #?
Мне нужно подключиться к 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); } } }
До сих пор я читал эти блоги:
- Как SID отличается от имени службы в Oracle tnsnames.ora
- Процедура UTL_FILE.FOPEN () не принимает путь к каталогу?
- ORA-01461: может связывать значение LONG только для вставки в столбцы LONG. Происходит при запросе
- Как получить хорошо отформатированные результаты из процедуры Oracle, которая возвращает ссылку на указатель?
- Oracle 11g получает все согласованные вхождения регулярным выражением
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. Какие шаги я должен предпринять, чтобы это произошло?
- Как подключиться к базе данных Oracle 11. сеть
- Нужно сбросить значение последовательности в Oracle
- Проблема прерывания Oracle JDBC
- Что именно делают кавычки вокруг имени таблицы?
- Как создать временную таблицу в базе данных Oracle?
- BadImageFormatException. Это произойдет при работе в режиме 64 бит с установленными 32-битными клиентскими компонентами Oracle
- как петля принимает ввод пользователя с помощью pl / sql?
- Больше нет данных для чтения из ошибки сокета
Прежде всего вам нужно скачать и установить 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, database> = 10g Release 2).
Следующий подход подходит для меня с помощью Visual Studio 2013 Update 4 1- В Solution Explorer щелкните правой кнопкой мыши ссылку «Ссылки», затем выберите «Добавить ссылки» 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); } }
В основном в этом случае System.Data.OracleClient должен иметь доступ к некоторым dll oracle, которые не являются частью .Net. Решения:
- Установите Oracle Client и добавьте расположение буфера в среду пути varaible of windows OR
- Скопируйте oraociicus10.dll (версию Basic-Lite) или aociei10.dll (основная версия), oci.dll, orannzsbb10.dll и oraocci10.dll из папки установки клиента oracle в папку bin приложения, чтобы приложение могло найти необходимую DLL
3 шага:
- В проекте Rightclick выберите «Управление пакетами NuGet …»
- Выберите вкладку «Обзор», найдите «Oracle» и установите «Oracle.ManagedDataAccess»,
-
Используйте следующий код ( Ctrl +) для автоматического добавления директивы use), обратите внимание на другую строку
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 + ")");