|
Oracle.DataAccess.dll двух версий в одном проекте. Как реализовать?
|
|||
---|---|---|---|
#18+
Доброго времени суток! Есть несколько версий оракла (9 и 11). На пользовательских компьютерах стоят клиенты соответствующей версионности. Таблицы на серверах одни и те же - так что выборка данных получается универсальная. Делать две версии проекта - под каждую Oracle.DataAccess.dll не хочется. Подскажите, если нельзя добавить обе в проект, как их подключать динамически? (Желательно с примером подключения и обращения к OracleConnection, OracleCommand). ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2018, 22:03 |
|
Oracle.DataAccess.dll двух версий в одном проекте. Как реализовать?
|
|||
---|---|---|---|
#18+
BRS_1, Используй клиента от 11й и проверь, что работает. Мне лень лезть на саппорт, да и ты не указал точные версии клиента и сервера -ниже есть ссылки на патчноты http://www.dba-oracle.com/t_oracle_client_versions_higher_lower_database_release.htm ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2018, 22:22 |
|
Oracle.DataAccess.dll двух версий в одном проекте. Как реализовать?
|
|||
---|---|---|---|
#18+
BRS_1, Ну уж девятку то надо сменить. Десятка куда ни шло, а девятка это как виндовс 3.1))) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2018, 22:45 |
|
Oracle.DataAccess.dll двух версий в одном проекте. Как реализовать?
|
|||
---|---|---|---|
#18+
Petro123BRS_1, Ну уж девятку то надо сменить. Десятка куда ни шло, а девятка это как виндовс 3.1)))Вопрос спорный. 9ка ничем плохим не вспоминается, а вот отладочный ОЕМ в 10ке просто пипец, сколько волос стоил, особенно в первых версиях. Допилили его только в 11. Не нашел, работает ли 9ка на системах после ХР или нет.. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2018, 22:59 |
|
Oracle.DataAccess.dll двух версий в одном проекте. Как реализовать?
|
|||
---|---|---|---|
#18+
Siemargl, авторИспользуй клиента от 11й и проверь, что работает. Проект собранный с Oracle.DataAccess.dll (версия 2.112.1.0) от Oracle 11 - на компьютере с установленным клиентом от Oracle 9 не запускается. Наоборот с Oracle.DataAccess.dll (версия 9.2.0.700) от Oracle 9 - на компьютере с установленным клиентом Oracle 11, впрочем, тоже не работает. Переставлять клиентов на компьютерах пользователей не вариант. Хочется универсальности от будущей программы. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2018, 23:42 |
|
Oracle.DataAccess.dll двух версий в одном проекте. Как реализовать?
|
|||
---|---|---|---|
#18+
BRS_1, Клиентов придется, конечно, переставлять. Или будешь иметь две версии(сборки) программы. Конец вечно оттягивать не получится. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2018, 23:53 |
|
Oracle.DataAccess.dll двух версий в одном проекте. Как реализовать?
|
|||
---|---|---|---|
#18+
SiemarglBRS_1, Клиентов придется, конечно, переставлять. Или будешь иметь две версии(сборки) программы. Конец вечно оттягивать не получится. Может есть вариант с динамическим подключением библиотеки? С экселем же можно работать (позднее связывание) не замарачиваясь какой офис, стоит на компе. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2018, 00:57 |
|
Oracle.DataAccess.dll двух версий в одном проекте. Как реализовать?
|
|||
---|---|---|---|
#18+
BRS_1Может есть вариант с динамическим подключением библиотеки? С экселем же можно работать (позднее связывание) не замарачиваясь какой офис, стоит на компе. Это потому что эксель - COM-приложение. И позднее связывание - оно исключительно из области работы с COM. В данном случае вариантов 2: 1. Хардкорный: определять версию установленного клиента оракла, после этого грузить нужную сборку через Assembly.LoadFile, дальше - работать через рефлекшн. 2. Разработку вести на референсе к сборке какой-то одной версии (видимо, неважно какой). После компиляции выкладывать сборки в две разных папки внутри папки сборки. При установке приложения в зависимости от версии ораклового клиента в конфиге указывать ту или иную папку в assemblyBinding/probing , и прописывать bindingRedirect версии сборки. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2018, 06:36 |
|
Oracle.DataAccess.dll двух версий в одном проекте. Как реализовать?
|
|||
---|---|---|---|
#18+
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-х разрядного клиента. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2018, 06:56 |
|
Oracle.DataAccess.dll двух версий в одном проекте. Как реализовать?
|
|||
---|---|---|---|
#18+
* Уточню: 1 клиент на машине 32-х разрядный 11.х. Не надо ставить под каждую версию БД своего клиента. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2018, 06:58 |
|
Oracle.DataAccess.dll двух версий в одном проекте. Как реализовать?
|
|||
---|---|---|---|
#18+
BRS_1Проект собранный с Oracle.DataAccess.dll Значит есть возможность сборки BRS_1Переставлять клиентов на компьютерах пользователей не вариант. Выше озвученый вариант вообще не требует клиента на компьютере пользователя. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2018, 07:08 |
|
Oracle.DataAccess.dll двух версий в одном проекте. Как реализовать?
|
|||
---|---|---|---|
#18+
SiemarglВопрос спорный.вопрос однозначный. Зайди в ветку оракла и поспорь. Siemarglособенно в первых версиях. Так всю жизнь вспоминать будем? Я себе давно в прошлой жизни уже 12 версию поставил. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2018, 07:28 |
|
Oracle.DataAccess.dll двух версий в одном проекте. Как реализовать?
|
|||
---|---|---|---|
#18+
Сон Веры ПавловныВ данном случае вариантов 2: 1. Хардкорный: определять версию установленного клиента оракла, после этого грузить нужную сборку через Assembly.LoadFile, дальше - работать через рефлекшн. Можно примеры кода с рефлекшеном? Что бы, так сказать, "понимать всю глубину наших глубин" (с). ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2018, 10:45 |
|
Oracle.DataAccess.dll двух версий в одном проекте. Как реализовать?
|
|||
---|---|---|---|
#18+
BRS_1SiemarglBRS_1, Клиентов придется, конечно, переставлять. Или будешь иметь две версии(сборки) программы. Конец вечно оттягивать не получится. Может есть вариант с динамическим подключением библиотеки? С экселем же можно работать (позднее связывание) не замарачиваясь какой офис, стоит на компе.Кстати, если убрать жесткий биндинг к версии Ассембли, то вроде так и работает - подсовывай только нужную версию, соотв версии клиента. stells2BRS_1Проект собранный с Oracle.DataAccess.dll Значит есть возможность сборки BRS_1Переставлять клиентов на компьютерах пользователей не вариант. Выше озвученый вариант вообще не требует клиента на компьютере пользователя. ManagedDataAccess официально может коннектиться >= 10.2 Надо проверять. Официально для 9.2 нужен ODAC11.2, а он только unmanaged ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2018, 10:57 |
|
Oracle.DataAccess.dll двух версий в одном проекте. Как реализовать?
|
|||
---|---|---|---|
#18+
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.
... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2018, 12:07 |
|
Oracle.DataAccess.dll двух версий в одном проекте. Как реализовать?
|
|||
---|---|---|---|
#18+
SiemarglManagedDataAccess официально может коннектиться >= 10.2 Надо проверять. Официально для 9.2 нужен ODAC11.2, а он только unmanaged Что-то не обнаружил явного указания. По сути, что пропишем в tnsnames.ora (SID или службу, туда и подключимся), или нет? Согласен, лично не цеплялся через ManagedDataAccess к 9-ке. Можно проверить, не сложно же. С другой стороны, тогда вообще клиенты станут не нужны. ps: конечно, надо бы уж как минимум на 11g перейти, но, это не вопрос топика ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2018, 12:51 |
|
Oracle.DataAccess.dll двух версий в одном проекте. Как реализовать?
|
|||
---|---|---|---|
#18+
stells2конечно, надо бы уж как минимум на 11g перейти, но, это не вопрос топика Все впереди). Автор ещё не помучился). ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2018, 13:11 |
|
Oracle.DataAccess.dll двух версий в одном проекте. Как реализовать?
|
|||
---|---|---|---|
#18+
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 ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2018, 13:36 |
|
Oracle.DataAccess.dll двух версий в одном проекте. Как реализовать?
|
|||
---|---|---|---|
#18+
Siemargl, Я говорю о ODAC for Visual Studio 2015 (например), там я не увидел ограничений по версии oracle ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2018, 13:57 |
|
Oracle.DataAccess.dll двух версий в одном проекте. Как реализовать?
|
|||
---|---|---|---|
#18+
Сон Веры ПавловныКак-то вот так: Благодарю!!! ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2018, 14:29 |
|
Oracle.DataAccess.dll двух версий в одном проекте. Как реализовать?
|
|||
---|---|---|---|
#18+
Разобрался, может кому пригодится: Итак, начало программы, глобальные типы и переменные: (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.
Старт программы и подключение к БД: Код: 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.
Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
24.04.2019, 10:51 |
|
Oracle.DataAccess.dll двух версий в одном проекте. Как реализовать?
|
|||
---|---|---|---|
#18+
Переходим к самому вкусному, к получению данных: Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
24.04.2019, 10:54 |
|
Oracle.DataAccess.dll двух версий в одном проекте. Как реализовать?
|
|||
---|---|---|---|
#18+
То, что хотел реализовать (что бы один проект использовал разные DLL для подключения) - получилось. Примечания: 1) Без объявления MethodInfo можно обойтись, но с ними удобнее вести отладку. 2) При вызове do_connect код Код: c# 1.
отработал без ошибок, хотя правильнее его было бы вызывать вот так: Код: c# 1.
наверное, дело в том что у типа Oracle.DataAccess.Client.OracleConnection есть только один такой метод set_ConnectionString(System.String) 3) Использовать using , как раньше: Код: c# 1. 2. 3. 4. 5. 6.
Не получилось, т.к. obj_ora_command не имеет явного преобразования в System.IDisposable Ну, вот как-то так. Критика кода приветствуется. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.04.2019, 11:25 |
|
Oracle.DataAccess.dll двух версий в одном проекте. Как реализовать?
|
|||
---|---|---|---|
#18+
BRS_1, Какая критика. Субд 9ка это субд прошлого тысячилетия. От того что нет апдейта ПО страдают все. И код в том числе. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.04.2019, 11:47 |
|
|
start [/forum/topic.php?fid=20&msg=39681526&tid=1398974]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
129ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
64ms |
get tp. blocked users: |
1ms |
others: | 16ms |
total: | 250ms |
0 / 0 |