Я пишу приложение, которое должно взаимодействовать с базой данных MySQL. Должен ли я использовать libmysql или соединитель ODBC? Есть ли какие-либо плюсы/минусы помимо того факта, что использование ODBC позволит мне в будущем изменять БД без особого изменения кода?
Приложение C libmysqlclient по сравнению с ODBC
Ответы (2)
Я постоянно меняю свою БД и использую C-коннектор, который работает безупречно и без особых изменений кода. Это был лучший выбор для меня и, возможно, для вас (конечно, только имхо).
Я не могу поверить, что изменения кода будут сильно отличаться между двумя интерфейсами, если вы собираетесь придерживаться MySQL.
РЕДАКТИРОВАНИЕ: изначально я выбрал разъем C, потому что он был интуитивно понятным и естественным для меня; и потому что я не был слишком уверен, что существует рабочий, защищенный ODBC для Linux: мой код должен работать как под Windows, так и под Linux. Теперь вижу, что такое действительно есть. Это делает ODBC более привлекательным: возможно, я бы выбрал другой вариант, если бы знал об этом.
На мой взгляд, это вопрос личных предпочтений.
При использовании libmysql хорошим подходом было бы сначала написать набор общих функций-оболочек libmysqlclient (уровень A), а затем набор функций, реализующих функциональность базы данных, которую вы собираетесь использовать в своей программе (уровень B), и выше вашей фактической программы (уровень C).
Переход с libmysql на ODBC требует лишь незначительных изменений на уровне B без изменения API уровня B. Следовательно, если вы собираетесь использовать свою программу только с MySQL, я бы посоветовал вам придерживаться libmysql, пока кто-нибудь не предоставит вам патч для ODBC.
С технической точки зрения вам придется найти компромисс между подключением к базе данных и переносимостью. Использование libmysql позволяет компилировать ваш код без изменений на различных платформах, таких как Unix, MacOS и Windows. Библиотеки ODBC обычно пишутся либо для Windows, либо для Unix/MacOS.