/
AirLexa
/
07
Обзор
Документация
Войти
/
AirLexa
/
07
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
Lesson_01/Task_3/Task_3.cpp
92 строки
3 KB
AirLexa
урок 1
23 июн 2026, 16:30
Верифицирован
23 июн 2026, 16:30
ee26e4f
Код
Авторство
О чём код?
#include <iostream> #include <windows.h> #include <string> #include <sstream> #include <vector> #include <map> class SqlSelectQueryBuilder { private: std::string str_column = ""; std::string str_from = ""; std::string str_where = ""; public: SqlSelectQueryBuilder& AddColumn(const std::string& column) { if (!str_column.empty()) str_column.append(", "); str_column.append(column); return *this; } SqlSelectQueryBuilder& AddColumns(const std::vector<std::string>& columns) noexcept { for (std::string s : columns) AddColumn(s); return *this; } SqlSelectQueryBuilder& AddFrom(const std::string& from) { str_from = from; return *this; } SqlSelectQueryBuilder& AddWhere(const std::string& w1, const std::string& w2) { if (!str_where.empty()) str_where.append(" AND "); str_where.append(w1).append("=").append(w2); return *this; } SqlSelectQueryBuilder& AddWhere(const std::string& w1, const std::string& w2, const std::string& mark) { if (!str_where.empty()) str_where.append(" AND "); str_where.append(w1).append(mark).append(w2); return *this; } SqlSelectQueryBuilder& AddWhere(const std::map<std::string, std::string>& kv) noexcept { for (const auto& [w1, w2] : kv) AddWhere(w1, w2); return *this; } std::string build() { if (str_from.empty()) return ""; std::stringstream query; query << "SELECT " << (str_column.empty() ? "*" : str_column) << " FROM " << str_from; if (!str_where.empty()) query << " WHERE " << str_where; return query.str().append(";"); } }; class AdvancedSqlSelectQueryBuilder : public SqlSelectQueryBuilder { public: AdvancedSqlSelectQueryBuilder& AddWhereMore(const std::string& w1, const std::string& w2) noexcept { SqlSelectQueryBuilder::AddWhere(w1, w2, ">"); return *this; } AdvancedSqlSelectQueryBuilder& AddWhereLess(const std::string& w1, const std::string& w2) noexcept { SqlSelectQueryBuilder::AddWhere(w1, w2, "<"); return *this; } }; int main() { SetConsoleCP(1251); SetConsoleOutputCP(1251); AdvancedSqlSelectQueryBuilder query_builder; query_builder.AddColumn("name").AddColumn("phone"); query_builder.AddFrom("students"); query_builder.AddWhereMore("id", "21").AddWhereLess("id", "42").AddWhere("name", "John"); std::string s = query_builder.build(); std::cout << "SQL = " << s << std::endl; }