Подключение к MS SQL Server из кроссплатформенного приложения - PullRequest
2 голосов
/ 16 августа 2010

Я работаю над приложением с графическим интерфейсом, которое будет использоваться для «ручной оценки» больших наборов данных, созданных с помощью алгоритма ИИ.Характер оценки не важен для этого вопроса;только тот факт, что программе потребуется периодически проверять новые данные с сервера, загружать их , а затем загружать результаты , которые выдает пользователь.В этом вопросе каждый набор данных - это просто двоичный двоичный объект.

Машина, на которой будут размещаться данные, в настоящее время настроена на Microsoft SQL Server .По административным причинам мне, вероятно, придется использовать SQL Server (а не веб-сервер, работающий на той же машине) для хранения данных.Я знаю SQL и сомневаюсь, что у меня будут проблемы с изучением его версии от Microsoft.


Вот сложная часть: Программа должна работать на Mac OS X и Windows .У меня нет большого опыта разработки под Windows, и я делаю большую часть кода на Mac с использованием XCode - с помощью кросс-компилятора и виртуальной машины Windows для компиляции / тестирования версии Windows. (Тем не менее, у меня уже есть графический интерфейс, работающий в Windows, так что проблема не в этом. Код в Objective-C, но я счастлив использовать чистый C или даже C ++ для доступа к базе данных..)

Программе просто нужно подключиться к SQL Server и выполнить простые запросы .Мне бы очень хотелось, чтобы библиотека, которую я мог просто привязать к своему приложению, чтобы она могла делать свое дело - вроде как я могу с SQLite , но я бы, очевидно, передавал строку подключения, а не базу данныхимя файла.Я бы предпочел, чтобы конечный пользователь не устанавливал на свою машину ничего лишнего.Вот что я нашел до сих пор:

  • Компоненты доступа к данным Microsoft 'Интерфейс ODBC - только для Windows, и последняя версия была выпущена в 2005 году, котораяменя интересует, поддерживает ли он последнюю версию SQL Server.
  • iODBC - работает практически на всех устройствах, кроме Windows.
  • FreeTDS - доступ к SQL Server осуществляется через собственный протокол, а не через ODBC.Утверждает, что работает на "Linux / UNIX", но мне удалось без проблем скомпилировать его на OSX.

Последние два с открытым исходным кодом.Беглый взгляд на код показывает, что FreeTDS использует BSD-сокеты для подключения к серверу (я еще не выяснил, что использует IODBC, но, вероятно, то же самое), и я не могу понять, почему любая другая часть кода будетнепереносимой.Если необходимо, я буду готов портировать код сокета FreeTDS на Winsock, если буду уверен, что не столкнусь с какими-либо другими препятствиями.


Мой вопрос:

Могу ли я получить одну из этих библиотек (или что-нибудь еще в этом отношении) для связи с версиями моего приложения для Mac и Windows моего приложения?

Если нет, то какую комбинацию библиотек лучше всего использовать для обеспечения минимальных хлопот?В любом случае, есть ли какие-либо ошибки, о которых мне нужно знать при распространении версии Windows, например, библиотеки DLL, которые нужно будет установить на компьютерах пользователей?


Обновление:

По рекомендации @ TomTom я собираюсь попробовать FreeTDS.Несмотря на то, что я первоначально думал, он компилируется в Windows, и кажется, что использование нативной реализации TDS считается лучше, чем ODBC, который, по-видимому, устарел на 10 лет.

Ответы [ 2 ]

3 голосов
/ 16 августа 2010

iOBDC является диспетчером драйверов ODBC, а не фактическим драйвером ODBC, поэтому, если вы будете его использовать, для MS SQL Server также потребуется драйвер ODBC.Если вы разрабатываете для Mac OS X и имеете кросс-компилятор для Windows, вы можете создать приложение ODBC для выполнения этих операций с базами данных, которые вам требуются в Mac OS X, а затем кросс-компиляцию для Windows.Прелесть создания приложения ODBC в том, что все, что вам тогда нужно, это исходный код и драйвер ODBC для вашей целевой базы данных и операционной системы, чтобы вы тоже не рассматривались.Например, программное обеспечение OpenLink имеет набор драйверов ODBC для большинства популярных реляционных баз данных, включая SQL Server, как указано в http://uda.openlinksw.com/sqlserver-odbc/

Что касается OLEDB, это может быть более новая технология, чем ODBC, но она не прошла тествремени, поскольку это специфично для Windows и с тех пор было заменено ADO.Net другой специфической для Windows технологией (если у вас нет Mono).Принимая во внимание, что ODBC является основным универсальным API доступа к данным, доступным в большинстве коммерческих ОС Windows, Linux / Unix, Mac OS X и т. Д., И продолжает поддерживаться и поддерживаться другими сторонними поставщиками, такими как OpenLink Software, которые гарантируют, что он остается надежнымжизнеспособный кроссплатформенный и независимый от базы данных API.

1 голос
/ 16 августа 2010

Что ж, ODBC в целом устарел / частично вышел на пенсию (на 10 лет, если вам интересно) и заменил b более быстрой / более простой в обращении технологией clle OleDb.

Тем не менее, забудь об этом - иди к реализации TDS и будь доволен этим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...