C#, Oracle и Linux
Релиб
Форумы       Участники    Календарь    Кто он-лайн?
Добро пожаловать, гость ( Вход | Регистрация )
        



C#, Oracle и Linux Expand / Collapse
Автор
Сообщение
25.07.2007 13:12
новичок

новичокновичокновичокновичокновичокновичокновичокновичок

участник
Last Login: 27.08.2007 12:28
Сообщ.: 2, Visits: 9
Есть программка, в которой обращение к БД oracle. Oracle-сервер версии 10g ex на Linux RedHat. Под виндой оно работает с использованием клиента оракл для винды.

using System;
using System.Data;
using Oracle.DataAccess.Client;
using Oracle.DataAccess.Types;

namespace mono2
{
   class Program
   {
       static void Main(string[] args)
       {
           string connectionString =
              "Data Source=Ora-serv;" +
              "User ID=test;" +
              "Password=test;";
           OracleConnection dbcon = null;
           dbcon = new OracleConnection(connectionString);
           dbcon.Open();
           OracleCommand dbcmd = dbcon.CreateCommand();
           string sql = "SELECT * FROM employee";
           dbcmd.CommandText = sql;
           Console.WriteLine("Создаем ридер");
           //OracleDataReader reader = dbcmd.ExecuteReader(CommandBehavior.SingleResult);
           OracleDataReader reader = dbcmd.ExecuteReader();
           Console.WriteLine("ридер создан");
           while (reader.Read())
           {
               string zname = (string)reader["zname"];
               Console.WriteLine(" Name: {0}", zname);
           }

           // clean up
           reader.Close();
           reader = null;
           dbcmd.CommandText = sql;
           dbcmd.ExecuteNonQuery();
           dbcmd.Dispose();
           dbcmd = null;
           dbcon.Close();
           dbcon = null;
       }
   }
}

Нужно, чтоб оно работало под Linux. При попытке портирования на mono (такая реализация .NET под Linux :-)) с использованием оракл-клиента для линукс получаем ошибки в части обращения к базе.

Как правильно перенести (подправить, установить что-то) это приложение на Linux?

Сообщ. #914943
27.07.2007 17:18
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 12.10.2007 4:11
Сообщ.: 219, Visits: 1 804
Поищи в документации правильный connectionString:  host, SID, port.
Сообщ. #915008
30.07.2007 17:05
новичок

новичокновичокновичокновичокновичокновичокновичокновичок

участник
Last Login: 27.08.2007 12:28
Сообщ.: 2, Visits: 9
Если кому интересно, рад сообщить, что такой зоопарк всё же имеет право на жизнь! Wink

Кратко: пошли по пути коннекта через ODBC.

Использовали недавно объявленный Ораклом бесплатный сервер 10 g Express Edition, его аккуратно установили на Linux машине, тут надо было особое внимание обратить на прописывание переменных окружения, которые требует документация. Там же в глубинах установленного сервера есть скриптик, который устанавливает ODBC драйвер. По нему тоже есть всё в описании. Нужно наличие ещё такой приблуды, как DataManager и др. из пакета unixODBC. Эта вещь тоже должна быть инсталлирована на Linux машине. Ну вот и всё собственно. Теперь берём немножко подправленный код из первого поста этой ветки:

using System;

using System.Data;

using System.Data.Odbc;

namespace mono2

{

class Program

{

static void Main(string[] args)

{

string connectionString = "DSN=OracleODBC-10g;" +

"UID=hr;PWD=hr";

IDbConnection dbcon = null;

dbcon = new OdbcConnection(connectionString);

dbcon.Open();

IDbCommand dbcmd = dbcon.CreateCommand();

string sql = "SELECT JOB_TITLE FROM jobs";

dbcmd.CommandText = sql;

IDataReader reader = dbcmd.ExecuteReader();

while (reader.Read())

{

string JOB_TITLE = (string)reader["JOB_TITLE"];

Console.WriteLine(" Name: {0}", JOB_TITLE);

}

reader.Close();

reader = null;

dbcmd.Dispose();

dbcmd = null;

dbcon.Close();

dbcon = null;

}

}

}

компилируем его (можно даже под Виндой), полученный exeшник выполняем на Linux-машине:

# mono mono2.exe

И убеждаемся, что всё работает Smile

Сообщ. #915033
30.07.2007 17:10
Supreme Being

Supreme Being

модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240, Visits: 65 445
Любопытно.
Сообщ. #915034
« пред. тема | след. тема »


Эту тему читают Expand / Collapse
Посетители: 0 (0 гостей, 0 участников, 0 скрыт.участников)
Сейчас нет участников, просматривающих тему.
Модераторы: Alexey, boombastik, bazile, pl

Время GMT +3:00, Сейчас 12:16