MariaDB
 sql >> база данни >  >> RDS >> MariaDB

Как да свържете C++ програми към MariaDB

Днес обявихме общата наличност на MariaDB Connector/C++. Езикът C++ е известен със своята ефективност, гъвкавост и разширяемост. Всъщност той често се използва в индустрии като финтех и игри, където приложенията изискват предвидим едновременност и латентност. С MariaDB Connector/C++ разработчиците могат да използват новия конектор в рамките на своите приложения, за да се свържат нативно с MariaDB Server на място и в облака на MariaDB SkySQL.

В тази статия ще ви запозная с MariaDB Connector/C++ с прости примери, които демонстрират взаимодействията за създаване, четене, актуализиране и изтриване (CRUD) с данни, съхранявани в MariaDB. По-конкретно, ще разгледам процеса на създаване на C++ конзолно приложение, което ще ви позволи да извършвате прости операции за управление на задачи. Но стига приказки, нека започваме!

Изтегляне и инсталиране

За да използвате MariaDB Connector/C++, трябва да имате достъп до екземпляр на MariaDB Server. Има различни начини, по които можете да започнете с MariaDB на вашата локална машина, на място или дори в облака.

  1. Изтеглете и инсталирайте MariaDB Community Server
    1. Директно
    2. Използване на изображение на Docker
  2. Изтеглете и инсталирайте MariaDB Enterprise Server 
  3. Внедряване с MariaDB SkySQL, най-добрата облачна база данни на MariaDB

След като настроите екземпляр на MariaDB сървър, можете да следвате стъпките, предоставени в документацията на MariaDB Enterprise за инструкции как да изтеглите и инсталирате MariaDB Connector/C++.

Подготовка на MariaDB сървър

В този пример, преди да можете да използвате новия MariaDB C++ конектор, ще трябва да имате база данни и таблица. Използвайки клиент по ваш избор, свържете се с вашия екземпляр на база данни MariaDB и:

1. Създайте нова база данни и една таблица, която ще отговаря за съхраняването на записите на задачите.

СЪЗДАВАНЕ НА БАЗА ДАННИ, АКО НЕ СЪЩЕСТВУВА todo;СЪЗДАВАЙТЕ ТАБЛИЦА todo.tasks (  id INT(11) unsigned NOT NULL AUTO_INCREMENT,  описание VARCHAR(500) NOT NULL,  завършен BOOLEAN NOT NULL DEFAULT)0 (K DEFAULT) ); предварително> 

2. Създайте нов потребител на база данни, който Connector/C++ ще използва за свързване с MariaDB.

СЪЗДАДЕТЕ ПОТРЕБИТЕЛ, АКО НЕ СЪЩЕСТВУВА app_user@localhost, ИДЕНТИФИЦИРАН С 'Password123!'; ПРЕДОСТАВЕТЕ ВСИЧКИ ПРИВИЛЕГИИ НА todo.* НА app_user@localhost;

Свързване с MariaDB сървър

Сега, когато имате настроени екземпляр на база данни, схема и потребител, е време да преминете към C++. Всичко започва с установяване на връзка с MariaDB. Разбира се, за да направите това, трябва да сте включили заглавните файлове на конектора MariaDB, по-специално conncpp.hpp, в горната част на файла, към който добавяте своя C++ код.

#include 

За да установите връзка, започнете с извличане на Driver обект, който след това може да се използва, в комбинация с конфигурационна информация за свързване на база данни на Java (JDBC), за получаване на Connection обект.

// Инстанциране на Driversql::Driver* driver =sql::mariadb::get_driver_instance();// Конфигуриране на Connectionsql::SQLString url("jdbc:mariadb://localhost:3306/todo");sql::Свойства на свойства({{"user", "app_user"}, {"password", "Password123!"}});// Установете Connectionsstd::unique_ptr conn(driver->connect(url, properties ));

За повече информация относно функционалността за свързване на MariaDB Connector/C++ не забравяйте да разгледате нашата официална корпоративна документация.

Добавяне на задачи

След като получите Connection обект, отивате на състезанията! Използвайки conn, от предишния раздел, вече можете да изпълнявате SQL чрез използването на подготвен израз за вмъкване на данни в MariaDB.

// Създайте нов PreparedStatementstd::unique_ptr stmnt(conn->prepareStatement("вмъкнете в стойности на задачи (описание) (?)"));// Свържете стойности към SQL statementstmnt->setString (1, описание);// Изпълнете querystmnt->executeQuery();

Извличане на задачи

Използвайки много подобен подход, както в последния раздел, можете също да създадете Statement обект за извличане и отпечатване на всички записи на задачите в таблицата със задачи.

// Създайте нов Statementstd::unique_ptr stmnt(conn->createStatement());// Изпълнете querysql::ResultSet *res =stmnt->executeQuery("select * from tasks");// Превъртете и отпечатайте резултатиwhile (res->next()) { std::cout <<"id =" <getInt(1); std::cout <<", description =" <getString(2); std::cout <<", завършен =" <getBoolean(3) <<"\n";}

Актуализиране на задачи

Можете също да използвате PreparedStatement и посочване на параметри (и стойности) за намиране и промяна на съществуващ запис на задача.

// Създайте нов PreparedStatementstd::unique_ptr stmnt(conn->prepareStatement("актуализация на задачите, зададени завършени =? където id =?"));// Свързване на стойности към SQL statementstmnt->setBoolean(1, завършен); stmnt->setInt(2, id);// Изпълнете querystmnt->executeQuery();

Изтриване на задачи

И, разбира се, също така имате възможността да премахвате данни от MariaDB с помощта на DELETE SQL изявление с PreparedStatement , за да насочите към конкретен запис.

// Създайте нов PreparedStatementstd::unique_ptr stmnt(conn->prepareStatement("изтриване от задачи, където id =?"));// Свържете стойности към SQL операториstmnt->setInt(1, id);// Изпълнете querystmnt->executeQuery();

Обединяване на всичко

И накрая, можете да съберете всичко в един самостоятелен пример, като копирате и поставите кода по-долу в нов файл, наречен tasks.cpp . Пробата по-долу комбинира всички CRUD операции, през които преминах, в колекция от функции, които могат да се изпълняват от главната метод.

#include  #include #include 
// Изтриване на запис на задача (посочен от id)void deleteTask(std::unique_ptr &conn, int id) { try { // Създайте нов PreparedStatement std::unique_ptr stmnt(conn->prepareStatement("изтриване от задачи, където id =?")); // Свързване на стойности към SQL израз stmnt->setInt(1, id); // Изпълнение на заявка stmnt->executeQuery(); } catch(sql::SQLException&e){ std::cerr <<"Грешка при изтриване на задача:" < readyStatement("актуализация на зададените задачи завършена =? където id =?")); // Свързване на стойности към SQL израз stmnt->setBoolean(1, завършен); stmnt->setInt(2, id); // Изпълнение на заявка stmnt->executeQuery(); } catch(sql::SQLException&e){ std::cerr <<"Грешка при актуализиране на състоянието на задачата:" <prepareStatement("вмъкнете в задачите (описание)) стойности (?)")); // Свързване на стойности към SQL израз stmnt->setString(1, описание); // Изпълнение на заявка stmnt->executeQuery(); } catch(sql::SQLException&e){ std::cerr <<"Грешка при вмъкване на нова задача:" <createStatement()); // Изпълнение на заявка sql::ResultSet *res =stmnt->executeQuery("избере * от задачите"); // Превъртане и отпечатване на резултатите while (res->next()) { std::cout <<"id =" <getInt(1); std::cout <<", description =" <getString(2); std::cout <<", завършен =" <getBoolean(3) <<"\n"; } } catch(sql::SQLException&e){ std::cerr <<"Грешка при избора на задачи:" <connect(url, properties)); // Използвайте аргументи, за да определите изпълнението на следващите стъпки if (!strcmp(argv[1],"showTasks")) { showTasks(conn); } else if (!strcmp(argv[1],"addTask")) { if (argc !=3) { std::cout <<"Невалидни аргументи"; връщане 1; } addTask(conn, argv[2]); } else if (!strcmp(argv[1],"updateTaskStatus")) { if (argc !=4) { std::cout <<"Невалидни аргументи"; връщане 1; } updateTaskStatus(conn, atoi(argv[2]), argv[3]); } else if (!strcmp(argv[1],"deleteTask")) { if (argc !=3) { std::cout <<"Невалидни аргументи"; връщане 1; } deleteTask(conn, atoi(argv[2])); } // Затваряне на връзката conn->close(); } catch(sql::SQLException&e){ std::cerr <<"Грешка при свързване към платформата MariaDB:" < 

Можете също да намерите пълния източник на това примерно приложение тук. Източникът за този пример на C++ се съдържа в хранилище за приложение, наречено „TODO“, което също включва уеб интерфейс и няколко други примерни приложения за интеграция на MariaDB конектор, обхващащи множество езици.

Изпълнение на приложението

В Linux среда, след като сте създали tasks.cpp , можете да създадете изпълним файл, наречен tasks, с помощта на C++ компилатор.

$ g++ -o задачи tasks.cpp -std=c++11 -lmariadbcpp

С помощта на изпълнимия файл можете да предоставите различни стойности на аргументи, за да тествате CRUD операциите.

  • Вмъкване на нов запис на задача чрез предоставяне на стойност за описание.
./tasks addTask „Нова задача“
  • Отпечатване на всички записи на задачи.
./tasks showTasks
  • Актуализиране на стойността на завършения запис на задача. Просто предоставете стойности за идентификатор и попълнете.
./tasks updateTaskStatus 1 1
  • Изтрийте запис на задача, като предоставите стойност на идентификатор.
./tasks deleteTask 1

Само началото

Надяваме се, че ви е било приятно да видите колко лесно е да започнете да използвате C++ с MariaDB. Въпреки че това е страхотно въведение в програмирането на C++ с MariaDB, ние само започнахме да надраскаме повърхността на възможното!

Искате да се потопите по-дълбоко в MariaDB Connector/C++? Не забравяйте да разгледате MariaDB Developer Hub за още повече съдържание на новия C++ конектор, както и много други функции и възможности на MariaDB.

Намерете корпоративната документация на MariaDB Connector/C++.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL репликация с ProxySQL на WHM/cPanel сървъри:Част първа

  2. Изграждане на горещ режим на готовност на Amazon AWS с помощта на MariaDB Cluster

  3. 4 начина за избор на дублиращи се редове в MariaDB

  4. Изграждане на MySQL или MariaDB база данни в студен режим на готовност на Amazon AWS

  5. Покажете съпоставянето в MariaDB