sql >> Databáze >  >> RDS >> MariaDB

Jak připojit programy C++ k MariaDB

Dnes jsme oznámili obecnou dostupnost MariaDB Connector/C++. Jazyk C++ je známý svou efektivitou, všestranností a rozšiřitelností. Ve skutečnosti se často používá v odvětvích jako fintech a hraní her, kde aplikace vyžadují předvídatelnou souběžnost a latenci. S MariaDB Connector/C++ mohou vývojáři použít nový konektor ve svých aplikacích k nativnímu připojení k serveru MariaDB v místě a v cloudu na MariaDB SkySQL.

V tomto článku vám představím MariaDB Connector/C++ s jednoduchými příklady, které demonstrují vytváření, čtení, aktualizaci a mazání (CRUD) interakce s daty uloženými v MariaDB. Přesněji řečeno, projdu procesem vytváření konzolové aplikace C++, která vám umožní provádět jednoduché operace pro správu úloh. Ale dost řečí, pojďme začít!

Stažení a instalace

Abyste mohli používat MariaDB Connector/C++, musíte mít přístup k instanci serveru MariaDB. Existuje celá řada způsobů, jak můžete začít s MariaDB na místním počítači, lokálně nebo dokonce v cloudu.

  1. Stáhněte si a nainstalujte komunitní server MariaDB
    1. Přímo
    2. Použití obrázku Docker
  2. Stáhněte si a nainstalujte MariaDB Enterprise Server 
  3. Nasazení s MariaDB SkySQL, dokonalou cloudovou databází MariaDB

Po nastavení instance serveru MariaDB můžete postupovat podle kroků uvedených v dokumentaci MariaDB Enterprise pro pokyny ke stažení a instalaci MariaDB Connector/C++.

Příprava serveru MariaDB

V tomto příkladu, než budete moci použít nový konektor MariaDB C++, budete muset mít databázi a tabulku. Pomocí klienta dle vašeho výběru se připojte k instanci databáze MariaDB a:

1. Vytvořte novou databázi a jednu tabulku, která bude zodpovědná za ukládání záznamů úloh.

CREATE DATABASE IF NOT EXISTS todo;CREATE TABLE todo.tasks (  id INT(11) nepodepsané NOT NULL AUTO_INCREMENT,  popis VARCHAR(500) NOT NULL,  dokončeno BOOLEAN NOT NULL DEFAULT 0,  PRIMARY); před> 

2. Vytvořte nového uživatele databáze, kterého Connector/C++ použije pro připojení k MariaDB.

VYTVOŘIT UŽIVATELE, POKUD NEEXISTUJE app_user@localhost IDENTIFIKOVANÝ PODLE 'Heslo123!';UDĚLEJTE VŠECHNA PRIVILEGIUM TODO.* TOMU app_user@localhost;

Připojování k serveru MariaDB

Nyní, když máte instanci databáze, schéma a uživatele nastaveny, je čas skočit do C++. Vše začíná navázáním spojení s MariaDB. K tomu samozřejmě musíte zahrnout hlavičkové soubory konektoru MariaDB, konkrétně conncpp.hpp, v horní části souboru, do kterého přidáváte svůj kód C++.

#include 

Chcete-li navázat spojení, začněte získáním Driver objekt, který lze následně použít v kombinaci s konfiguračními informacemi Java Database Connectivity (JDBC) k získání Connection objekt.

// Instantiate Driversql::Driver* driver =sql::mariadb::get_driver_instance();// Konfigurace Connectionsql::SQLString url("jdbc:mariadb://localhost:3306/todo");sql::Vlastnosti vlastností({{"user", "app_user"}, {"password", "Password123!"}});// Vytvořit Connectionstd::unique_ptr conn(driver->connect(url, vlastnosti) ));

Pro více informací o funkci připojení MariaDB Connector/C++ se nezapomeňte podívat na naši oficiální podnikovou dokumentaci.

Přidávání úkolů

Jakmile získáte Connection objekt, vyrážíte na závody! Pomocí conn z předchozí části nyní můžete spouštět SQL pomocí připraveného příkazu pro vkládání dat do MariaDB.

// Vytvořte nový PreparedStatementstd::unique_ptr stmnt(conn->prepareStatement("vložit do úloh (popis) hodnoty (?)"));// Svázat hodnoty s příkazy SQLtmnt->setString (1, popis);// Spustit querystmnt->executeQuery();

Načítání úkolů

Pomocí velmi podobného přístupu, jako v předchozí části, můžete také vytvořit Statement objekt k načtení a vytištění všech záznamů úloh v tabulce úloh.

// Vytvořit nový Statementstd::unique_ptr stmnt(conn->createStatement());// Spustit querysql::ResultSet *res =stmnt->executeQuery("select * from task");// Procházet a print resultswhile (res->next()) { std::cout <<"id =" <getInt(1); std::cout <<", description =" <getString(2); std::cout <<", dokončeno =" <getBoolean(3) <<"\n";}

Aktualizace úkolů

Můžete také použít PreparedStatement a určení parametrů (a hodnot) pro vyhledání a úpravu existujícího záznamu úlohy.

// Vytvořte nový PreparedStatementstd::unique_ptr stmnt(conn->prepareStatement("aktualizace sady úloh dokončena =? kde id =?"));// Svázat hodnoty s příkazy SQLtmnt->setBoolean(1, dokončeno); stmnt->setInt(2, id);// Spustit querystmnt->executeQuery();

Odstranění úkolů

A samozřejmě máte také možnost odstranit data z MariaDB pomocí DELETE SQL příkaz s PreparedStatement , zacílit na konkrétní záznam.

// Vytvořte nový PreparedStatementstd::unique_ptr stmnt(conn->prepareStatement("smazat z úkolů, kde id =?"));// Navázat hodnoty na SQL statementtmnt->setInt(1, id);// Spustit querystmnt->executeQuery();

Spojení všeho dohromady

Nakonec můžete vše dát dohromady do jednoho samostatného příkladu zkopírováním a vložením níže uvedeného kódu do nového souboru s názvem tasks.cpp . Níže uvedená ukázka kombinuje všechny operace CRUD, kterými jsem prošel, do kolekce funkcí, které lze spustit z hlavní metoda.

#include  #include #include 
// Smazání záznamu úkolu (označeno id)void deleteTask(std::unique_ptr &conn, int id) { try { // Vytvořte nový PreparedStatement std::unique_ptr stmnt(conn->prepareStatement("smazat z úkolů, kde id =?")); // Naváže hodnoty na SQL příkaz stmnt->setInt(1, id); // Provedení dotazu stmnt->executeQuery(); } catch(sql::SQLException&e){ std::cerr <<"Chyba při odstraňování úlohy:" < PrepareStatement("aktualizace sady úloh dokončena =? kde id =?")); // Naváže hodnoty na SQL příkaz stmnt->setBoolean(1, dokončeno); stmnt->setInt(2, id); // Provedení dotazu stmnt->executeQuery(); } catch(sql::SQLException&e){ std::cerr <<"Chyba při aktualizaci stavu úlohy:" <prepareStatement("vložit do úkolů (popis)) hodnoty (?)")); // Naváže hodnoty na SQL příkaz stmnt->setString(1, popis); // Provedení dotazu stmnt->executeQuery(); } catch(sql::SQLException&e){ std::cerr <<"Chyba při vkládání nového úkolu:" <createStatement()); // Provedení dotazu sql::ResultSet *res =stmnt->executeQuery("vybrat * z úkolů"); // Procházet a tisknout výsledky while (res->next()) { std::cout <<"id =" <getInt(1); std::cout <<", description =" <getString(2); std::cout <<", dokončeno =" <getBoolean(3) <<"\n"; } } catch(sql::SQLException&e){ std::cerr <<"Chyba při výběru úloh:" <connect(url, vlastnosti)); // Použijte argumenty k určení provedení dalších kroků if (!strcmp(argv[1],"showTasks")) { showTasks(conn); } else if (!strcmp(argv[1],"addTask") { if (argc !=3) { std::cout <<"Neplatné argumenty"; návrat 1; } addTask(conn, argv[2]); } else if (!strcmp(argv[1],"updateTaskStatus")) { if (argc !=4) { std::cout <<"Neplatné argumenty"; návrat 1; } updateTaskStatus(conn, atoi(argv[2]), argv[3]); } else if (!strcmp(argv[1],"deleteTask") { if (argc !=3) { std::cout <<"Neplatné argumenty"; návrat 1; } deleteTask(conn, atoi(argv[2])); } // Zavřít připojení conn->close(); } catch(sql::SQLException&e){ std::cerr <<"Chyba při připojování k platformě MariaDB:" < 

Zde také můžete najít úplný zdroj této ukázkové aplikace. Zdroj tohoto příkladu C++ je obsažen v úložišti pro aplikaci nazvanou „TODO“, která také zahrnuje webový front-end a několik dalších ukázkových aplikací integrace konektoru MariaDB pokrývajících množství jazyků.

Spuštění aplikace

V prostředí Linuxu po vytvoření tasks.cpp , můžete pomocí kompilátoru C++ vytvořit spustitelný soubor, nazývaný tasky.

$ g++ -o tasks tasks.cpp -std=c++11 -lmariadbcpp

Pomocí spustitelného souboru můžete zadat různé hodnoty argumentů pro testování operací CRUD.

  • Vložení nového záznamu úkolu zadáním hodnoty pro popis.
./tasks addTask ‘Nový úkol’
  • Tisk všech záznamů úkolů.
./tasks showTasks
  • Aktualizace hodnoty dokončeného záznamu úkolu. Jednoduše zadejte hodnoty pro id a hotovo.
./tasks updateTaskStatus 1 1
  • Smažte záznam úkolu zadáním hodnoty id.
./tasks deleteTask 1

Jen začátek

Doufáme, že se vám líbilo, jak snadné je začít používat C++ s MariaDB. I když se jedná o skvělý úvod do programování v C++ s MariaDB, začali jsme teprve zkoumat, co je možné!

Chcete se ponořit hlouběji do MariaDB Connector/C++? Nezapomeňte se podívat na MariaDB Developer Hub, kde najdete ještě více obsahu o novém konektoru C++ a také mnoho dalších funkcí a možností MariaDB.

Najděte podnikovou dokumentaci MariaDB Connector/C++.


  1. SQL INSERT INTO z více tabulek

  2. MySQL Vyberte všechny sloupce z jedné tabulky a některé z jiné tabulky

  3. Nejprve seřaďte podle konkrétní hodnoty pole

  4. Aktualizace dat Salesforce pomocí kurzoru SQL Server