CppCMS не заставляет Вас использовать какую-либо конкретную библиотеку SQL-взаимодействия. Однако, проект предусматривает две полезных библиотеки: |
|
- [CppDB](http://art-blog.no-ip.info/sql/cppdb/) - самостоятельная C++ библиотека взаимодействия, поддерживающая СУБД MySQL, PostgreSQL, Sqlite3 и общие драйверы ODBC. |
- [DbiXX](http://art-blog.no-ip.info/sql/dbixx/) - C [libdbi](http://libdbi.sourceforge.net/) библиотека-обертка - устарела, используйте вместо нее CppDB для новых проектов. |
|
Эти библиотеки не связаны непосредственно с CppCMS, но они были разработаны, чтобы быть полезным для веб-разработки (и не только веб). |
|
Есть другие библиотеки, такие как [SOCI](http://soci.sourceforge.net/), QtSql и много других, |
которые обеспечивают аналогичную функциональность, однако каждая из них имеет свои недостатки (с точки зрения автора CppCMS). |
|
На самом деле [SOCI] (http://soci.sourceforge.net/) была одной из основных библиотек, которые вдохновили меня на разработку DbiXX и CppDB - и это в основном очень хорошая библиотека, которая может быть использована с CppCMS (и действительно, я использовал ее некоторое время с одним из моих проектов) |
|
Если вы планируете использовать другие библиотеки, я рекомендую принять во внимание следующее: |
|
1. Использует ли она подготовленные операторы или предоставляет авто-экранирование? Это наиболее важная особенность. Это должно быть простой операцией. В противном случае, Вы можете стать жертвой SQL-инъекции. |
1. Использует ли библиотека подготовленные операторы или предоставляет авто-экранирование? Это наиболее важная особенность. Это должно быть простой операцией. В противном случае, Вы можете стать жертвой SQL-инъекции. |
2. Безопасны ли в ней исключения и обеспечивает ли она безопасные исключения транзакций? |
3. Поддерживает ли более одной базы данных движка? Достаточно ли эта поддержка хороша? |
|
Это очень важные моменты, которые должны быть приняты во внимание. Первые два являются обязательными для веб-разработки с CppCMS, третий - должен предохранить Вас от блокировок вендора. |
|