Подключиться к источнику данных OLEDB из Java? - PullRequest
2 голосов
/ 17 сентября 2009

Мы пытаемся подключиться к экземпляру SQL Server, используемому системой ACT CRM. Им удалось заблокировать вещи, поэтому невозможно подключиться к фону SQL с помощью ODBC (есть специальная утилита, которая добавит поддержку ODBC, которую можно установить, если вы купите первичную версию программного обеспечения, но это просто сумасшедший).

Рекомендуемый метод подключения к базам данных - использование соединения OLEDB.

У кого-нибудь есть какие-нибудь хитрости / идеи / и т.д. ... о том, как создать и использовать соединение OLEDB из Java?

Это не обязательно должен быть JDBC, если это невозможно. Все, что нам действительно нужно сделать, это выполнить запрос SELECT, который возвращает два поля и анализировать значения этих полей для каждой строки. У меня очень мало опыта работы с OLEDB, поэтому «использование JACOB» может быть хорошим ответом, но я был бы признателен за некоторые детали того, какими должны быть вызовы COM.

Ответы [ 5 ]

1 голос
/ 24 марта 2014

Я знаю, что это старый, но может помочь кому-то узнать, как я это сделал

Я более подробно описал, как это сделать Здесь .

1 голос
/ 01 мая 2012

Это не твоя проблема. Проблема в том, как они заблокировали сервер. В основном при запуске он ищет логины, отличные от ACTUSER, и удаляет их.

Вы можете довольно легко разблокировать его, тогда вы сможете подключиться обычным способом.

https://serverfault.com/questions/77712/sqlserver-need-to-access-an-act-database-for-data-migration

Мне удалось разблокировать мой, но я забыл, как ... Я думаю, что я запустил его в однопользовательском режиме, затем сделал несколько забавных вещей, включая расшифровку сохраненного процесса в базе данных master и редактирование, чтобы удалить эту "функциональность" , Это, в свою очередь, включало использование SQLTrace для просмотра команд, которые отправлял ACT.

Я предлагаю вам спросить об ошибке сервера.

0 голосов
/ 11 декабря 2009

Два способа решения этой проблемы.

  1. Создать из Java внешний процесс (c #, c ++ и т. Д.), Который подключается к SQLSrv с помощью OLEDB и перенаправляет stdin, stdout и stderr в вашу java-программу.
  2. Создайте прослушиватель C # на определенном порту, и java передаст все запросы через клиент этому прослушивателю.
0 голосов
/ 11 декабря 2009

Или используйте: http://uda.openlinksw.com/jdbc/mt/jdbc-sqlserver-mt/ Они разрабатывают все виды водителей. Я использовал эту компанию раньше ...

0 голосов
/ 20 сентября 2009

Java не может получить доступ к OLEDB напрямую. Вы должны сделать это на другом языке, таком как C ++ или C #. Затем вы можете получить доступ через JNI или внешний процесс. Если вы не хотите писать нативную часть JNI self, вы можете использовать JACOB, как вы предлагаете. Но я думаю, что внешний процесс принимает запрос, кажется, проще.

...