Ответ
Да, в C++ проектах я часто писал SQL-запросы для работы с реляционными базами данных. Основной опыт связан с использованием нативных C/C++ API, таких как SQLite3, MySQL Connector/C++ и ODBC.
Пример работы с SQLite3 в C++:
#include <sqlite3.h>
#include <iostream>
#include <string>
int main() {
sqlite3* db;
sqlite3_open("test.db", &db);
const char* sql = "SELECT id, name FROM users WHERE age > ?;";
sqlite3_stmt* stmt;
if (sqlite3_prepare_v2(db, sql, -1, &stmt, nullptr) == SQLITE_OK) {
sqlite3_bind_int(stmt, 1, 18); // Привязка параметра
while (sqlite3_step(stmt) == SQLITE_ROW) {
int id = sqlite3_column_int(stmt, 0);
const unsigned char* name = sqlite3_column_text(stmt, 1);
std::cout << "ID: " << id << ", Name: " << name << std::endl;
}
sqlite3_finalize(stmt);
} else {
std::cerr << "Failed to prepare statement: " << sqlite3_errmsg(db) << std::endl;
}
sqlite3_close(db);
return 0;
}
С чем работал:
- Сложные запросы:
JOIN(INNER, LEFT),GROUP BYс агрегатными функциями, подзапросы. - Оптимизация: Использование индексов, анализ планов выполнения (
EXPLAIN QUERY PLANв SQLite). - Безопасность: Всегда использовал параметризованные запросы (как в примере с
?) для предотвращения SQL-инъекций. - Интеграция: Для сложной бизнес-логики иногда использовал ORM вроде ODB или выносил логику в хранимые процедуры на стороне СУБД (например, в PostgreSQL).
Видео-ответы
▶
▶
▶
▶
▶