|
|
|
новичок
      
участник
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?
|
|
|
|
|
Supreme Being
      
участник
Last Login: 12.10.2007 4:11
Сообщ.: 219,
Visits: 1 804
|
|
| Поищи в документации правильный connectionString: host, SID, port.
|
|
|
|
|
новичок
      
участник
Last Login: 27.08.2007 12:28
Сообщ.: 2,
Visits: 9
|
|
Если кому интересно, рад сообщить, что такой зоопарк всё же имеет право на жизнь!
Кратко: пошли по пути коннекта через 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
И убеждаемся, что всё работает
|
|
|
|
|
Supreme Being
модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240,
Visits: 65 445
|
|
|
|
|