Независимость от базы данных в Unix / C - PullRequest
2 голосов
/ 29 сентября 2008

У нас есть система, написанная на C и работающая под управлением Solaris & Linux, которая использует библиотеку Sybase CT для доступа к базе данных Sybase. Мы генерируем определения таблиц, индексы, хранимые процедуры и C-код из собственной разработанной DDL, чтобы уменьшить объем работы и ошибок.

Мы хотели бы добиться независимости от базы данных, чтобы мы могли добавить (в первую очередь) поддержку Oracle.

Мы думаем о ODBC или ESQL / C, но не имеем опыта работы с ними.

Какое решение вы бы предложили (желательно, конечно, дешевое и простое). Возможно ли иметь одно исходное решение?

Ответы [ 5 ]

3 голосов
/ 29 сентября 2008

Я очень рекомендую SQLAPI ++ (возможно, с недостатком, что это библиотека C ++). Существует также unixODBC , хотя я никогда не использовал его в коде - только затронул его при исследовании API переносимых баз данных. POCO также предоставляет унифицированный, переносимый API (хотя, опять же, в C ++) для операций с базами данных, но в последний раз я проверял, что часть POCO была только на начальных этапах разработки.

1 голос
/ 29 сентября 2008

iodbc http://www.firstsql.com/iodbc/

или unix odbc http://www.unixodbc.org/

Вероятно, это один из самых переносимых вариантов.

С уважением Friedrich

1 голос
/ 29 сентября 2008

ODBC поможет вам написать более переносимую систему, но вам нужно будет тщательно разработать SQL, если вы хотите использовать базовую базу данных, так как сам SQL может быть не на 100% переносимым между базами данных, даже если различные драйверы ODBC.

0 голосов
/ 29 сентября 2008

Я использовал iODBC для доступа к SQL Server и mysql, и пока у меня довольно хорошие результаты. Я думаю, что это будет работать и для Oracle, но это будет зависеть от драйвера ODBC, и ему пока не приходилось его пробовать.

0 голосов
/ 29 сентября 2008

ODBC предоставит вам гораздо больше возможностей переносимости по сравнению с ESQL / C.

...