Библиотеки доступа к базам данных для C++
Вопрос
Фон:
У меня есть приложение, написанное на собственном C++, которое использует библиотеку доступа к базе данных wxODBC из набора инструментов wxWidgets, которая сейчас находится в разработке. удаленный из всех будущих версий wxWidgets.Мне нужно заменить это другим методом доступа к базе данных, который поддерживает предположения и ограничения, изложенные ниже.Я не требую, чтобы при замене использовались собственные API-интерфейсы СУБД или ODBC, но она должна соответствовать ограничениям, изложенным ниже.
Предположения/ограничения
Библиотека обязана:
- Поддержка Native (т.е.неуправляемый) C++
- 32-битная Windows 2000/XP/2003
- Визуальная Студия 2005
- Microsoft SQL Server 2000 и 2005
- Оракул 9 и 10
- Производительность во время выполнения больше или равна wxODBC
- API-интерфейс одного программиста, поддерживающий несколько СУБД (например.не хочу писать другой код для использования разных СУБД)
Красиво, но необязательно:
- 64-битные операционные системы Windows
- 32-битные и/или 64-битные операционные системы Linux
- Microsoft SQL-сервер 2008
- Оракул 11
- MySQL
- Любая дополнительная СУБД
- Визуальная Студия 2008
- Открытый источник
- Производительность во время выполнения близка к собственному API СУБД или равна ему.
Вопрос:
Какие хорошие библиотеки доступны (бесплатные, с открытым исходным кодом или платные), которые поддерживают несколько СУБД из одного API, включая Oracle и Microsoft SQL Server, и могут использоваться из собственного C++?
Пожалуйста, опишите любой прошлый опыт (хороший ИЛИ плохой) с данной библиотекой и почему вы даете свои рекомендации за или против данной библиотеки, особенно в отношении допущений и ограничений, изложенных выше.
Смотрите также:
https://stackoverflow.com/questions/74141/good-orm-for-c-solutions
Решение
Я использую SQLAPI++.Определенно стоит посмотреть.
Другие советы
Вы можете использовать СОЦИ http://soci.sourceforge.net или также Wt::Dbo, http://www.webtoolkit.eu и посмотрите на компонент Wt::Dbo.
Библиотека - это http://otl.sourceforge.net/
Мой работодатель использовал его.
Я не могу сказать вам, насколько его производительность сравнима с wxODBC, но он может соответствовать вашим требованиям.
Вы можете проверить Дебеа - Доступ к базе данных SQL и ORM для C++.Он имеет встроенный API для wxWidgets.
Qt также является вариантом.Он поддерживает соединения с нужными вам серверами и довольно прост в использовании.
http://doc.trolltech.com/4.4/sql-driver.html#supported-databases
При использовании Qt вам не нужно выполнять сборку на основе всего Qt.Например, вы можете просто использовать часть SQL и оставить всю часть графического интерфейса снаружи.
Поскольку он недавно был одобрен LGPL, вы также можете использовать его для собственного приложения.