powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Oracle.DataAccess.dll двух версий в одном проекте. Как реализовать?
25 сообщений из 41, страница 1 из 2
Oracle.DataAccess.dll двух версий в одном проекте. Как реализовать?
    #39681294
BRS_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток!

Есть несколько версий оракла (9 и 11).
На пользовательских компьютерах стоят клиенты соответствующей версионности.
Таблицы на серверах одни и те же - так что выборка данных получается универсальная.

Делать две версии проекта - под каждую Oracle.DataAccess.dll не хочется.
Подскажите, если нельзя добавить обе в проект, как их подключать динамически? (Желательно с примером подключения и обращения к OracleConnection, OracleCommand).
...
Рейтинг: 0 / 0
Oracle.DataAccess.dll двух версий в одном проекте. Как реализовать?
    #39681302
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BRS_1,

Используй клиента от 11й и проверь, что работает.

Мне лень лезть на саппорт, да и ты не указал точные версии клиента и сервера -ниже есть ссылки на патчноты
http://www.dba-oracle.com/t_oracle_client_versions_higher_lower_database_release.htm
...
Рейтинг: 0 / 0
Oracle.DataAccess.dll двух версий в одном проекте. Как реализовать?
    #39681317
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BRS_1,
Ну уж девятку то надо сменить.
Десятка куда ни шло, а девятка это как виндовс 3.1)))
...
Рейтинг: 0 / 0
Oracle.DataAccess.dll двух версий в одном проекте. Как реализовать?
    #39681322
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123BRS_1,
Ну уж девятку то надо сменить.
Десятка куда ни шло, а девятка это как виндовс 3.1)))Вопрос спорный.

9ка ничем плохим не вспоминается, а вот отладочный ОЕМ в 10ке просто пипец, сколько волос стоил, особенно в первых версиях. Допилили его только в 11.

Не нашел, работает ли 9ка на системах после ХР или нет..
...
Рейтинг: 0 / 0
Oracle.DataAccess.dll двух версий в одном проекте. Как реализовать?
    #39681335
BRS_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Siemargl,

авторИспользуй клиента от 11й и проверь, что работает.

Проект собранный с Oracle.DataAccess.dll (версия 2.112.1.0) от Oracle 11 - на компьютере с установленным клиентом от Oracle 9 не запускается.
Наоборот с Oracle.DataAccess.dll (версия 9.2.0.700) от Oracle 9 - на компьютере с установленным клиентом Oracle 11, впрочем, тоже не работает.

Переставлять клиентов на компьютерах пользователей не вариант.
Хочется универсальности от будущей программы.
...
Рейтинг: 0 / 0
Oracle.DataAccess.dll двух версий в одном проекте. Как реализовать?
    #39681337
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BRS_1,

Клиентов придется, конечно, переставлять.

Или будешь иметь две версии(сборки) программы.

Конец вечно оттягивать не получится.
...
Рейтинг: 0 / 0
Oracle.DataAccess.dll двух версий в одном проекте. Как реализовать?
    #39681346
BRS_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SiemarglBRS_1,
Клиентов придется, конечно, переставлять.
Или будешь иметь две версии(сборки) программы.
Конец вечно оттягивать не получится.


Может есть вариант с динамическим подключением библиотеки?
С экселем же можно работать (позднее связывание) не замарачиваясь какой офис, стоит на компе.
...
Рейтинг: 0 / 0
Oracle.DataAccess.dll двух версий в одном проекте. Как реализовать?
    #39681372
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BRS_1Может есть вариант с динамическим подключением библиотеки?
С экселем же можно работать (позднее связывание) не замарачиваясь какой офис, стоит на компе.
Это потому что эксель - COM-приложение. И позднее связывание - оно исключительно из области работы с COM.
В данном случае вариантов 2:
1. Хардкорный: определять версию установленного клиента оракла, после этого грузить нужную сборку через Assembly.LoadFile, дальше - работать через рефлекшн.
2. Разработку вести на референсе к сборке какой-то одной версии (видимо, неважно какой). После компиляции выкладывать сборки в две разных папки внутри папки сборки. При установке приложения в зависимости от версии ораклового клиента в конфиге указывать ту или иную папку в assemblyBinding/probing , и прописывать bindingRedirect версии сборки.
...
Рейтинг: 0 / 0
Oracle.DataAccess.dll двух версий в одном проекте. Как реализовать?
    #39681375
Фотография stells2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Если есть возможность пересобрать:
Качаем Oracle Developer Tools for Visual Studio для своей весрии студии.
1.1. В проекте убираем ссылки Oracle.DataAccess заменяем на Oracle.ManagedDataAccess
1.2. соотвественно using Oracle.ManagedDataAccess.Client;
2. Собираем проект (ы)
3. С исполняемым файлом и всем что поставляем клиенту, добавляем в каталог исполняемого файла
Oracle.ManagedDataAccess.dll и tnsnames.ora
4. Забиваем на клиентов, можно их удалить вообще.
Все страшный сон с версионностью пропал.

Если нет возможности пересобрать - кусаем локти :) Но, не так все плохо.
Ставим предпоследнего клиента (11.х) - он будет работать с вашими БД. Важно, ставте 32-х разрядного клиента.
...
Рейтинг: 0 / 0
Oracle.DataAccess.dll двух версий в одном проекте. Как реализовать?
    #39681376
Фотография stells2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
* Уточню:
1 клиент на машине 32-х разрядный 11.х.
Не надо ставить под каждую версию БД своего клиента.
...
Рейтинг: 0 / 0
Oracle.DataAccess.dll двух версий в одном проекте. Как реализовать?
    #39681377
Фотография stells2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BRS_1Проект собранный с Oracle.DataAccess.dll

Значит есть возможность сборки
BRS_1Переставлять клиентов на компьютерах пользователей не вариант.
Выше озвученый вариант вообще не требует клиента на компьютере пользователя.
...
Рейтинг: 0 / 0
Oracle.DataAccess.dll двух версий в одном проекте. Как реализовать?
    #39681378
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglВопрос спорный.вопрос однозначный. Зайди в ветку оракла и поспорь.

Siemarglособенно в первых версиях.
Так всю жизнь вспоминать будем?
Я себе давно в прошлой жизни уже 12 версию поставил.
...
Рейтинг: 0 / 0
Oracle.DataAccess.dll двух версий в одном проекте. Как реализовать?
    #39681442
BRS_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сон Веры ПавловныВ данном случае вариантов 2:
1. Хардкорный: определять версию установленного клиента оракла, после этого грузить нужную сборку через Assembly.LoadFile, дальше - работать через рефлекшн.

Можно примеры кода с рефлекшеном? Что бы, так сказать, "понимать всю глубину наших глубин" (с).
...
Рейтинг: 0 / 0
Oracle.DataAccess.dll двух версий в одном проекте. Как реализовать?
    #39681449
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BRS_1SiemarglBRS_1,
Клиентов придется, конечно, переставлять.
Или будешь иметь две версии(сборки) программы.
Конец вечно оттягивать не получится.


Может есть вариант с динамическим подключением библиотеки?
С экселем же можно работать (позднее связывание) не замарачиваясь какой офис, стоит на компе.Кстати, если убрать жесткий биндинг к версии Ассембли, то вроде так и работает - подсовывай только нужную версию, соотв версии клиента.

stells2BRS_1Проект собранный с Oracle.DataAccess.dll

Значит есть возможность сборки
BRS_1Переставлять клиентов на компьютерах пользователей не вариант.
Выше озвученый вариант вообще не требует клиента на компьютере пользователя.
ManagedDataAccess официально может коннектиться >= 10.2

Надо проверять.

Официально для 9.2 нужен ODAC11.2, а он только unmanaged
...
Рейтинг: 0 / 0
Oracle.DataAccess.dll двух версий в одном проекте. Как реализовать?
    #39681501
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglКстати, если убрать жесткий биндинг к версии Ассембли, то вроде так и работает - подсовывай только нужную версию, соотв версии клиента.
Нет, прописывать в конфиге bindingRedirect всё равно будет нужно, даже если у референса в свойствах будет указано Use specific version=False.
BRS_1Можно примеры кода с рефлекшеном? Что бы, так сказать, "понимать всю глубину наших глубин" (с).
Как-то вот так:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
class Program
{
  static void Main()
  {
    var reflector = new OraReflector();
    using (var cnn = reflector.GetConnection("........."))
    using (var cmd = reflector.GetCommand(@"
      select object_name, object_id
      from sys.all_objects
      where owner=:owner and rownum<10", cnn)
    )
    {
      reflector.AddParameter(cmd, "owner", "Varchar2", 100, "PUBLIC");
      using (var rd = cmd.ExecuteReader())
        while(rd.Read())
          Console.WriteLine("{0} {1}", rd.GetString(0), rd.GetDecimal(1));
    }
    Console.WriteLine("done");
    Console.ReadKey(true);
  }

}

class OraReflector
{
  readonly Assembly _oraAssembly;
  public OraReflector()
  {
    _oraAssembly = Assembly.LoadFile(@"D:\Trash\2\Oracle.ManagedDataAccess.dll");
  }

  public DbConnection GetConnection(string connectString)
  {
    var connectionType = GetOraType("OracleConnection");
    var connection = (DbConnection)Activator.CreateInstance(connectionType);
    connection.ConnectionString = connectString;
    connection.Open();
    return connection;
  }

  public DbCommand GetCommand(string command, DbConnection connection)
  {
    var commandType = GetOraType("OracleCommand");
    var ctor = commandType.GetConstructor(new[] {typeof(string), GetOraType("OracleConnection")});
    if (ctor==null)
      throw new ApplicationException("OracleCommand constructor notfound");
    return (DbCommand) ctor.Invoke(new object[] {command, connection});
  }

  public DbParameter AddParameter(DbCommand command, string name, string dataType, int size, object value)
  {
    var paramType = GetOraType("OracleParameter");
    var parameter = (DbParameter)Activator.CreateInstance(paramType);
    parameter.ParameterName = name;
    if (!string.IsNullOrEmpty(dataType))
      paramType.GetProperty("OracleDbType", BindingFlags.Public | BindingFlags.Instance)
        .SetValue(parameter, Enum.Parse(GetOraType("OracleDbType"), dataType, false), null);
    if (size != -1)
      parameter.Size = size;
    parameter.Value = value;
    command.Parameters.Add(parameter);
    return parameter;
  }

  const string DefaultNs = "Oracle.ManagedDataAccess.Client";
  Type GetOraType(string name)
  {
    return GetOraType(DefaultNs, name);
  }

  Type GetOraType(string @namespace, string name)
  {
    return _oraAssembly.GetType(string.Concat(@namespace, ".", name), true, false);
  }
}
...
Рейтинг: 0 / 0
Oracle.DataAccess.dll двух версий в одном проекте. Как реализовать?
    #39681526
Фотография stells2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglManagedDataAccess официально может коннектиться >= 10.2
Надо проверять.
Официально для 9.2 нужен ODAC11.2, а он только unmanaged
Что-то не обнаружил явного указания.
По сути, что пропишем в tnsnames.ora (SID или службу, туда и подключимся), или нет?
Согласен, лично не цеплялся через ManagedDataAccess к 9-ке. Можно проверить, не сложно же.
С другой стороны, тогда вообще клиенты станут не нужны.

ps: конечно, надо бы уж как минимум на 11g перейти, но, это не вопрос топика
...
Рейтинг: 0 / 0
Oracle.DataAccess.dll двух версий в одном проекте. Как реализовать?
    #39681540
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stells2конечно, надо бы уж как минимум на 11g перейти, но, это не вопрос топика
Все впереди). Автор ещё не помучился).
...
Рейтинг: 0 / 0
Oracle.DataAccess.dll двух версий в одном проекте. Как реализовать?
    #39681553
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stells2SiemarglManagedDataAccess официально может коннектиться >= 10.2
Надо проверять.
Официально для 9.2 нужен ODAC11.2, а он только unmanaged
Что-то не обнаружил явного указания....
https://www.oracle.com/technetwork/topics/dotnet/install122010-3711118.html
ODAC 12.2c Release 1 (12.2.0.1.0) Installation Instructions, Setup, and NotesThe following items are required for ODAC:

Windows x64 operating system

Windows 10 (Pro, Enterprise, and Education editions), Windows 8.1 and Windows 8 (Pro and Enterprise editions), Windows 7 (Professional, Enterprise, Ultimate editions), Windows Server 2016 (Standard, Datacenter, and Essentials Editions), Windows Server 2012 R2 and Windows Server 2012 (Standard, Datacenter, Essentials, and Foundation editions)

Access to an Oracle Database Server ( Oracle 10g Release 2 or later )

аналогично читать для ODAC11
...
Рейтинг: 0 / 0
Oracle.DataAccess.dll двух версий в одном проекте. Как реализовать?
    #39681563
Фотография stells2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Siemargl,
Я говорю о ODAC for Visual Studio 2015 (например), там я не увидел ограничений по версии oracle
...
Рейтинг: 0 / 0
Oracle.DataAccess.dll двух версий в одном проекте. Как реализовать?
    #39681582
BRS_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сон Веры ПавловныКак-то вот так:


Благодарю!!!
...
Рейтинг: 0 / 0
Oracle.DataAccess.dll двух версий в одном проекте. Как реализовать?
    #39805658
BRS_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Разобрался, может кому пригодится:

Итак, начало программы, глобальные типы и переменные:
(Enum (скопирован по образцу OracleDbType) – понадобится позже, при работе с параметрами)

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
public partial class MainForm : Form
    {
        IniFile ini;

        Assembly assembly = null;
        Type t_ora_connection = null;
        Type t_ora_param_collection = null;
        Type t_ora_oracledbtype = null;
        
        object obj_ora_connection = null;   

        public enum MyOracleDbType
        {
            BFile = 101,
            Blob = 102,
            Byte = 103,
            Char = 104,
            Clob = 105,
            Date = 106,
            Decimal = 107,
            Double = 108,
            Long = 109,
            LongRaw = 110,
            Int16 = 111,
            Int32 = 112,
            Int64 = 113,
            IntervalDS = 114,
            IntervalYM = 115,
            NClob = 116,
            NChar = 117,
            NVarchar2 = 119,
            Raw = 120,
            RefCursor = 121,
            Single = 122,
            TimeStamp = 123,
            TimeStampLTZ = 124,
            TimeStampTZ = 125,
            Varchar2 = 126,
            XmlType = 127,
        }



Старт программы и подключение к БД:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
        private void MainForm_Load(object sender, EventArgs e)
        {
            #region выбор библиотеки
            s_temp = ini.IniReadValue("ConnectSection", "version");
            if (!string.IsNullOrEmpty(s_temp))
            {
                string s_dir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
                
                switch (s_temp)
                {
                    case "9":
                        s_dir += "\\Ora9\\Oracle.DataAccess.dll";
                        break;

                    case "11":
                        s_dir += "\\Ora11\\Oracle.DataAccess.dll";
                        break;
                }
                assembly = Assembly.LoadFrom(s_dir); 
            }
            #endregion

            string s_login = ini.IniReadValue("ConnectSection", "login");
            string s_pass = ini.IniReadValue("ConnectSection", "pass");
            string s_alias = ini.IniReadValue("ConnectSection", "alias");

            if (!do_connect(s_login, s_pass, s_alias))
            {
                  this.DialogResult = System.Windows.Forms.DialogResult.Cancel;
                  this.Close();
                  return;
            }
            ...
       }



Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
        private bool do_connect(string s_login, string s_pass, string s_alias)
        {
            t_ora_connection = assembly.GetType("Oracle.DataAccess.Client.OracleConnection");
            t_ora_param_collection = assembly.GetType("Oracle.DataAccess.Client.OracleParameterCollection");
            t_ora_oracledbtype = assembly.GetType("Oracle.DataAccess.Client.OracleDbType");

            obj_ora_connection = assembly.CreateInstance("Oracle.DataAccess.Client.OracleConnection");

            bool b_result = false;
            string s_con = "User Id=" + s_login +
                           ";Password=" + s_pass +
                           ";Data Source=" + s_alias;

            MethodInfo mi_set_conn_str = t_ora_connection.GetMethod("set_ConnectionString");
            MethodInfo mi_state = t_ora_connection.GetMethod("get_State");
            MethodInfo mi_open = t_ora_connection.GetMethod("Open");

            Object[] o_arr = new Object[1];
            o_arr[0] = s_con;

            mi_set_conn_str.Invoke(obj_ora_connection, o_arr);           //добавили строку подключения
            
            try
            {
                mi_open.Invoke(obj_ora_connection, null);               //открыли соединение
                
                if ((ConnectionState)mi_state.Invoke(obj_ora_connection, null) == System.Data.ConnectionState.Open)     //проверили состояние подключения
                {
                    Append_Log("Подключение к БД: " + System.Data.ConnectionState.Open.ToString());
                    b_result = true;
                }
            }
            catch (Exception ex)
            {
                Append_Log(ex.ToString());
            }            
            
            return b_result;
        }
...
Рейтинг: 0 / 0
Oracle.DataAccess.dll двух версий в одном проекте. Как реализовать?
    #39805659
BRS_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Переходим к самому вкусному, к получению данных:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
        private DataTable GetDataFrom_Oracle4(
                                                int i_s1,
                                                int i_n1,
                                                int i_n2,
                                                DateTime dt                                                                                                
                                                )
        {

            Type t_ora_command = null;
            object obj_ora_command = null;

            try
            {
                string s_query = "select " +
                                 [вырезано цензурой]
                                  "where  a.s1 = :P_S1 " +
                                 "and    a.n1 = :P_N1 " +
                                 "and    a.n2 = :P_N2 " +
                                 "and    a.dd_mm_yyyy = :P_DD_MM_YYYY " +
                                 "order by 1,2,3";                                                                  

                t_ora_command = assembly.GetType("Oracle.DataAccess.Client.OracleCommand");
                obj_ora_command = assembly.CreateInstance("Oracle.DataAccess.Client.OracleCommand");

                MethodInfo mi_set_cmd_text = t_ora_command.GetMethod("set_CommandText", new Type[] { typeof(System.String) });
                mi_set_cmd_text.Invoke(obj_ora_command, new object[1] { s_query });                                                     //засунули строку запроса

                MethodInfo mi_set_connection = t_ora_command.GetMethod("set_Connection", new Type[] { t_ora_connection });
                mi_set_connection.Invoke(obj_ora_command, new object[1] { obj_ora_connection });

                MethodInfo mi_set_commandtype = t_ora_command.GetMethod("set_CommandType", new Type[] { typeof(System.Data.CommandType) });
                mi_set_commandtype.Invoke(obj_ora_command, new object[1] { System.Data.CommandType.Text });

                MethodInfo mi_bindbyname = t_ora_command.GetMethod("set_BindByName", new Type[] { typeof(bool)});
                mi_bindbyname.Invoke(obj_ora_command, new object[1] { true });

                MethodInfo mi_get_parameters = t_ora_command.GetMethod("get_Parameters");
                object obj_ora_param_collection = mi_get_parameters.Invoke(obj_ora_command, null);             

                MethodInfo mi_param_add = t_ora_param_collection.GetMethod("Add", new Type[] { typeof(System.String), t_ora_oracledbtype, typeof(System.Object), typeof(System.Data.ParameterDirection) });

                object obj_ora_param_s1 = mi_param_add.Invoke(obj_ora_param_collection, new object[] { "P_S1", MyOracleDbType.Int32, i_s1, ParameterDirection.Input });
                object obj_ora_param_n1 = mi_param_add.Invoke(obj_ora_param_collection, new object[] { "P_N1", MyOracleDbType.Int32, i_n1, ParameterDirection.Input });
                object obj_ora_param_n2 = mi_param_add.Invoke(obj_ora_param_collection, new object[] { "P_N2", MyOracleDbType.Int32, i_n2, ParameterDirection.Input });
                object obj_ora_param_dd_mm_yyyy = mi_param_add.Invoke(obj_ora_param_collection, new object[] { "P_DD_MM_YYYY", MyOracleDbType.Date, dt.Date, ParameterDirection.Input });

                MethodInfo mi_executereader = t_ora_command.GetMethod("ExecuteReader", new Type[] { });
                object obj_ora_reader = mi_executereader.Invoke(obj_ora_command, null);

                DataTable DT = new DataTable();
                DT.Load((IDataReader)obj_ora_reader);

                obj_ora_param_collection = obj_ora_param_s1 = obj_ora_param_n1 = obj_ora_param_n2 = obj_ora_param_dd_mm_yyyy = obj_ora_reader = null;

                return DT;
                
            }
            catch (Exception asc_exc)
            {
                Append_Log(asc_exc.ToString());

                return null;
            }
            finally
            {
                if (obj_ora_command != null)
                {
                    ((IDisposable)obj_ora_command).Dispose();
                }                
            }
        }        
...
Рейтинг: 0 / 0
Oracle.DataAccess.dll двух версий в одном проекте. Как реализовать?
    #39805669
BRS_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
То, что хотел реализовать (что бы один проект использовал разные DLL для подключения) - получилось.

Примечания:

1) Без объявления MethodInfo можно обойтись, но с ними удобнее вести отладку.
2) При вызове do_connect код

Код: c#
1.
            MethodInfo mi_set_conn_str = t_ora_connection.GetMethod("set_ConnectionString");



отработал без ошибок, хотя правильнее его было бы вызывать вот так:

Код: c#
1.
            MethodInfo mi_set_conn_str = t_ora_connection.GetMethod("set_ConnectionString",new Type[] { typeof(System.String) });



наверное, дело в том что у типа Oracle.DataAccess.Client.OracleConnection есть только один такой метод set_ConnectionString(System.String)

3) Использовать using , как раньше:

Код: c#
1.
2.
3.
4.
5.
6.
using (OracleCommand cmd = new OracleCommand(s_query, oc))
{
     cmd.CommandType = CommandType.Text;
     cmd.BindByName = true;
     ...
}



Не получилось, т.к. obj_ora_command не имеет явного преобразования в System.IDisposable


Ну, вот как-то так.
Критика кода приветствуется.
...
Рейтинг: 0 / 0
Oracle.DataAccess.dll двух версий в одном проекте. Как реализовать?
    #39805676
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BRS_1,
Какая критика. Субд 9ка это субд прошлого тысячилетия. От того что нет апдейта ПО страдают все. И код в том числе.
...
Рейтинг: 0 / 0
Oracle.DataAccess.dll двух версий в одном проекте. Как реализовать?
    #39805695
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BRS_1....Ну, вот как-то так.
Критика кода приветствуется.Это называется "приколхозил" =)
...
Рейтинг: 0 / 0
25 сообщений из 41, страница 1 из 2
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Oracle.DataAccess.dll двух версий в одном проекте. Как реализовать?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]