Комментируя это, потому что это один из лучших результатов поиска Google для добавления подключения SQL Server к приложению Какао (MacOS), но я не вижу ни одного текущего решения в списке.
FreeTDS - как предположил Дэниел, это самый быстрый / самый простой способ, но некоторая информация о том, как это сделать без использования страшного Java-моста или какого-либо взлома Python. Создайте FreeTDS с помощью Homebrew (не ради бога, попробуйте собрать его на Mac самостоятельно), затем выберите свой проект в Xcode finder, выберите вкладку «фазы сборки», затем в разделе «связать двоичные файлы с библиотеками» свяжите библиотеку FreeTDS libsybdb (используйте динамический или статический). нажмите на знак «+», затем выберите «добавить другие», затем перейдите туда, где находятся библиотеки - для меня каталог, в который были установлены библиотеки, был
/ USR / местные / Подвал / FreeTDS / 1.00.109 / Библиотека
затем выберите (например) libsybdb.a в этом каталоге
Затем вы можете использовать FreeTDS API или использовать обертку, такую как , автором которой является Мартин Рыбак , что я и сделал (я использую старую версию этого кода "SQLClient"). Он работает довольно просто для экземпляра SQL Server в AWS и, как и ожидалось, немного сложнее для экземпляра Azure AWS - мне нужно было взломать оболочку, поскольку код оболочки выдает команду «use db» для azure после входа в систему, которую Azure не примет - для лазури база данных должна быть установлена во время соединения - вместо этого я добавил (используя более новый код из GitHub):
DBSETLDBNAME(_login, [host UTF8String]);
в файле SQLClient.m, который я добавил в раздел:
DBSETLUSER(_login, [username UTF8String]);
DBSETLPWD(_login, _password);
DBSETLHOST(_login, [host UTF8String]);
DBSETLCHARSET(_login, [self.charset UTF8String]);
и я прокомментировал:
if (database) {
_returnCode = dbuse(_connection, [database UTF8String]);
if (_returnCode == FAIL) {
[self connectionFailure:completion];
return;
}
}
Мое приложение основано на swift, поэтому я использую соединительный заголовок, добавляя к нему:
#import SQLClient.h
Чтобы использовать lib, что-то вроде (псевдокод, так как я сейчас не перед своим кодом):
let client = SQLClient.sharedInstance()
//I'm using the older code which uses a delegate and not notifications callback
self.client!.delegate = self
self.client!.connect("database_network_address", username: "username", password: "password", database: "database_name", completion: { (success) -> Void in
if(success) {
print ("connection has succeeded")
// now do something with the connection
self.client!.execute("select * from table_name", completion: { (data) -> Void in
//... do something with the returned array "data" per the wrapper API
})
} else {
print ("connection has NOT been success")
}
})
Дайте мне знать, если у вас есть вопросы по этому поводу. Это абсолютно работает для приложения Какао, я использую мое приложение для загрузки тонны данных в экземпляр Azure SQL Server. Удачи!