MariaDB
 sql >> डेटाबेस >  >> RDS >> MariaDB

C++ प्रोग्राम को MariaDB से कैसे कनेक्ट करें

आज, हमने मारियाडीबी कनेक्टर/सी++ की सामान्य उपलब्धता की घोषणा की। C++ भाषा अपनी दक्षता, बहुमुखी प्रतिभा और विस्तारशीलता के लिए जानी जाती है। वास्तव में, इसका उपयोग अक्सर फिनटेक और गेमिंग जैसे उद्योगों में किया जाता है, जहां अनुप्रयोगों के लिए पूर्वानुमेय संगामिति और विलंबता की आवश्यकता होती है। मारियाडीबी कनेक्टर/सी++ के साथ, डेवलपर्स अपने अनुप्रयोगों के भीतर नए कनेक्टर का उपयोग मूल रूप से मारियाडीबी सर्वर से परिसर में और मारियाडीबी स्काईएसक्यूएल पर क्लाउड में कनेक्ट करने के लिए कर सकते हैं।

इस लेख में मैं आपको सरल उदाहरणों के साथ मारियाडीबी कनेक्टर / सी ++ से परिचित कराऊंगा जो मारियाडीबी में संग्रहीत डेटा के साथ क्रिएट, रीड, अपडेट और डिलीट (सीआरयूडी) इंटरैक्शन प्रदर्शित करता है। अधिक विशेष रूप से, मैं एक सी ++ कंसोल एप्लिकेशन बनाने की प्रक्रिया के माध्यम से चलने जा रहा हूं जो आपको कार्यों के प्रबंधन के लिए सरल संचालन करने की अनुमति देगा। लेकिन बात काफी है, चलिए शुरू करते हैं!

डाउनलोड करना और इंस्टॉल करना

मारियाडीबी कनेक्टर/सी++ का उपयोग करने के लिए आपको मारियाडीबी सर्वर के एक उदाहरण तक पहुंच की आवश्यकता है। अपने स्थानीय मशीन, ऑन-प्रिमाइसेस, या यहां तक ​​कि क्लाउड में भी कई तरह से आप मारियाडीबी के साथ शुरुआत कर सकते हैं।

  1. MariaDB कम्युनिटी सर्वर डाउनलोड और इंस्टॉल करें
    1. सीधे
    2. डॉकर छवि का उपयोग करना
  2. MariaDB Enterprise Server डाउनलोड और इंस्टॉल करें 
  3. मारियाडीबी स्काईएसक्यूएल, परम मारियाडीबी क्लाउड डेटाबेस के साथ परिनियोजित करें

मारियाडीबी सर्वर इंस्टेंस सेट करने के बाद आप मारियाडीबी कनेक्टर/सी++ को डाउनलोड और इंस्टॉल करने के निर्देशों के लिए मारियाडीबी एंटरप्राइज दस्तावेज में दिए गए चरणों का पालन कर सकते हैं।

मारियाडीबी सर्वर तैयार करना

इस उदाहरण में, इससे पहले कि आप नए MariaDB C++ कनेक्टर का उपयोग कर सकें, आपके पास एक डेटाबेस और तालिका होनी चाहिए। अपनी पसंद के क्लाइंट का उपयोग करके, अपने MariaDB डेटाबेस इंस्टेंस से कनेक्ट करें और:

1. एक नया डेटाबेस और एक टेबल बनाएं जो टास्क रिकॉर्ड्स को स्टोर करने के लिए जिम्मेदार होगा।

CREATE DATABASE IF NOT EXISTS todo;

CREATE TABLE todo.tasks (
  id INT(11) unsigned NOT NULL AUTO_INCREMENT,
  description VARCHAR(500) NOT NULL,
  completed BOOLEAN NOT NULL DEFAULT 0,
  PRIMARY KEY (id)
);

2. एक नया डेटाबेस उपयोगकर्ता बनाएं जिसका उपयोग Connector/C++ मारियाडीबी से कनेक्ट करने के लिए करेगा।

CREATE USER IF NOT EXISTS app_user@localhost IDENTIFIED BY 
 'Password123!';

GRANT ALL PRIVILEGES ON todo.* TO app_user@localhost;

MariaDB सर्वर से कनेक्ट हो रहा है

अब जब आपके पास अपना डेटाबेस इंस्टेंस, स्कीमा और उपयोगकर्ता सेट अप हो गया है, तो यह C ++ में कूदने का समय है। यह सब मारियाडीबी से संबंध स्थापित करके शुरू होता है। बेशक, ऐसा करने के लिए, आपको मारियाडीबी कनेक्टर हेडर फाइलों को शामिल करना होगा, विशेष रूप से conncpp.hpp, उस फ़ाइल के शीर्ष पर जिसमें आप अपना सी ++ कोड जोड़ रहे हैं।

#include <mariadb/conncpp.hpp>

एक कनेक्शन स्थापित करने के लिए, एक Driver . प्राप्त करके प्रारंभ करें ऑब्जेक्ट जिसे तब उपयोग किया जा सकता है, जावा डेटाबेस कनेक्टिविटी (जेडीबीसी) कॉन्फ़िगरेशन जानकारी के संयोजन में, Connection प्राप्त करने के लिए वस्तु।

// Instantiate Driver
sql::Driver* driver = sql::mariadb::get_driver_instance();

// Configure Connection
sql::SQLString url("jdbc:mariadb://localhost:3306/todo");
sql::Properties properties({{"user", "app_user"}, {"password", "Password123!"}});

// Establish Connection
std::unique_ptr<sql::Connection> conn(driver->connect(url, properties));

MariaDB के Connector/C++ की कनेक्शन कार्यक्षमता के बारे में अधिक जानकारी के लिए हमारे आधिकारिक एंटरप्राइज़ दस्तावेज़ों को देखना सुनिश्चित करें।

कार्य जोड़ना

एक बार जब आप एक Connection प्राप्त कर लेते हैं वस्तु, आप दौड़ के लिए तैयार हैं! पिछले अनुभाग से कॉन का उपयोग करके, अब आप मारियाडीबी में डेटा सम्मिलित करने के लिए तैयार कथन के उपयोग के माध्यम से SQL निष्पादित करने में सक्षम हैं।

// Create a new PreparedStatement
std::unique_ptr<sql::PreparedStatement> stmnt(conn->prepareStatement("insert into tasks (description) values (?)"));

// Bind values to SQL statement
stmnt->setString(1, description);

// Execute query
stmnt->executeQuery();

कार्य पुनर्प्राप्त करना

बहुत ही समान दृष्टिकोण का उपयोग करते हुए, जैसा कि पिछले अनुभाग में है, आप एक Statement भी बना सकते हैं कार्य तालिका के भीतर सभी कार्य रिकॉर्ड को पुनः प्राप्त करने और प्रिंट करने के लिए आपत्ति।

// Create a new Statement
std::unique_ptr stmnt(conn->createStatement());

// Execute query
sql::ResultSet *res = stmnt->executeQuery("select * from tasks");

// Loop through and print results
while (res->next()) {
       std::cout << "id = " << res->getInt(1);
       std::cout << ", description = " << res->getString(2);
       std::cout << ", completed = " << res->getBoolean(3) << "\n";
}

कार्य अपडेट करना

आप PreparedStatement . का भी उपयोग कर सकते हैं और मौजूदा कार्य रिकॉर्ड का पता लगाने और संशोधित करने के लिए पैरामीटर (और मान) निर्दिष्ट करना।

// Create a new PreparedStatement
std::unique_ptr stmnt(conn->prepareStatement("update tasks set completed = ? where id = ?"));

// Bind values to SQL statement
stmnt->setBoolean(1, completed);
stmnt->setInt(2, id);

// Execute query
stmnt->executeQuery();

कार्य हटाना

और, ज़ाहिर है, आपके पास DELETE SQL का उपयोग करके MariaDB से डेटा निकालने की क्षमता भी है PreparedStatement के साथ स्टेटमेंट , एक विशिष्ट रिकॉर्ड को लक्षित करने के लिए।

// Create a new PreparedStatement
std::unique_ptr stmnt(conn->prepareStatement("delete from tasks where id = ?"));

// Bind values to SQL statement
stmnt->setInt(1, id);

// Execute query
stmnt->executeQuery();

सभी को एक साथ लाना

अंत में, आप नीचे दिए गए कोड को कॉपी करके और tasks.cpp नामक एक नई फ़ाइल में पेस्ट करके एक, स्व-निहित उदाहरण में सब कुछ एक साथ रख सकते हैं। . नीचे दिया गया नमूना उन सभी सीआरयूडी परिचालनों को जोड़ता है जिन्हें मैंने कार्यों के संग्रह में किया है जिन्हें मुख्य से निष्पादित किया जा सकता है विधि।

#include <iostream> 
#include <cstring>
#include <mariadb/conncpp.hpp>

// Delete a task record (indicated by id)
void deleteTask(std::unique_ptr &conn, int id) {
    try {
        // Create a new PreparedStatement
        std::unique_ptr stmnt(conn->prepareStatement("delete from tasks where id = ?"));
        // Bind values to SQL statement
        stmnt->setInt(1, id);
        // Execute query
        stmnt->executeQuery();
    }
    catch(sql::SQLException& e){
      std::cerr << "Error deleting task: " << e.what() << std::endl;
   }
}

// Update the completed value of a task record (indicated by id)
void updateTaskStatus(std::unique_ptr &conn, int id, bool completed) {
    try {
        // Create a new PreparedStatement
        std::unique_ptr stmnt(conn->prepareStatement("update tasks set completed = ? where id = ?"));
        // Bind values to SQL statement
        stmnt->setBoolean(1, completed);
        stmnt->setInt(2, id);
        // Execute query
        stmnt->executeQuery();
    }
    catch(sql::SQLException& e){
      std::cerr << "Error updating task status: " << e.what() << std::endl;
   }
}

// Create a new task record
void addTask(std::unique_ptr &conn, std::string description) {
    try {
        // Create a new PreparedStatement
        std::unique_ptr stmnt(conn->prepareStatement("insert into tasks (description) values (?)"));
        // Bind values to SQL statement
        stmnt->setString(1, description);
        // Execute query
        stmnt->executeQuery();
    }
    catch(sql::SQLException& e){
      std::cerr << "Error inserting new task: " << e.what() << std::endl;
   }
}

// Print all records in tasks table 
void showTasks(std::unique_ptr &conn) {
    try {
        // Create a new Statement
        std::unique_ptr stmnt(conn->createStatement());
        // Execute query
        sql::ResultSet *res = stmnt->executeQuery("select * from tasks");
        // Loop through and print results
        while (res->next()) {
            std::cout << "id = " << res->getInt(1);
            std::cout << ", description = " << res->getString(2);
            std::cout << ", completed = " << res->getBoolean(3) << "\n";
        }
    }
    catch(sql::SQLException& e){
      std::cerr << "Error selecting tasks: " << e.what() << std::endl;
   }
}

// Main Process
int main(int argc, char **argv){
    if (argc==1){
        std::cout << "Please provide an argument.\n";
    }
    else {
        try {
            // Instantiate Driver
            sql::Driver* driver = sql::mariadb::get_driver_instance();

            // Configure Connection
            sql::SQLString url("jdbc:mariadb://localhost:3306/todo");
            sql::Properties properties({{"user", "app_user"}, {"password", "Password123!"}});

            // Establish Connection
            std::unique_ptr conn(driver->connect(url, properties));

            // Use arguments to determine execution next steps
            if (!strcmp(argv[1],"showTasks")) {
                showTasks(conn);
            }
            else if (!strcmp(argv[1],"addTask")) {
                if (argc != 3) {
                    std::cout << "Invalid arguments";
                    return 1;
                }
                addTask(conn, argv[2]);
            }
            else if (!strcmp(argv[1],"updateTaskStatus")) {
                if (argc != 4) {
                    std::cout << "Invalid arguments";
                    return 1;
                }
                updateTaskStatus(conn, atoi(argv[2]), argv[3]);
            }
            else if (!strcmp(argv[1],"deleteTask")) {
                if (argc != 3) {
                    std::cout << "Invalid arguments"; return 1; } deleteTask(conn, atoi(argv[2])); } // Close Connection conn->close();
        }
        catch(sql::SQLException& e){
            std::cerr << "Error Connecting to MariaDB Platform: " << e.what() << std::endl;
            // Exit (Failed)
            return 1;
        }
    }

    // Exit (Success)
    return 0;
}

आप यहां इस नमूना आवेदन का पूरा स्रोत भी पा सकते हैं। इस C++ उदाहरण का स्रोत "TODO" नामक एप्लिकेशन के लिए एक रिपॉजिटरी के भीतर समाहित है, जिसमें एक वेब फ्रंट-एंड और कई अन्य मारियाडीबी कनेक्टर एकीकरण नमूना एप्लिकेशन शामिल हैं, जो कई भाषाओं में फैले हुए हैं।

एप्लिकेशन चलाना

Linux परिवेश में, tasks.cpp . बनाने के बाद , आप C++ कंपाइलर का उपयोग करके एक निष्पादन योग्य फ़ाइल बना सकते हैं, जिसे कार्य कहा जाता है।

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

निष्पादन योग्य फ़ाइल का उपयोग करके आप सीआरयूडी संचालन का परीक्षण करने के लिए विभिन्न तर्क मूल्यों की आपूर्ति कर सकते हैं।

  • विवरण के लिए मान प्रदान करके एक नया कार्य रिकॉर्ड सम्मिलित करना।
./tasks addTask ‘A New Task’
  • सभी कार्य रिकॉर्ड का प्रिंट आउट लेना।
./tasks showTasks
  • कार्य रिकॉर्ड के पूर्ण मान को अपडेट करना। बस आईडी और पूर्ण के लिए मूल्यों की आपूर्ति करें।
./tasks updateTaskStatus 1 1
  • एक आईडी मान प्रदान करके कार्य रिकॉर्ड हटाएं।
./tasks deleteTask 1

बस शुरुआत

उम्मीद है, आपको यह देखकर अच्छा लगा होगा कि मारियाडीबी के साथ सी++ का उपयोग करना कितना आसान है। हालांकि यह मारियाडीबी के साथ सी++ प्रोग्रामिंग के लिए एक शानदार परिचय है, हमने केवल संभव की सतह को खरोंचना शुरू कर दिया है!

मारियाडीबी कनेक्टर/सी++ में गहराई से गोता लगाने के लिए खोज रहे हैं? नए C++ कनेक्टर के साथ-साथ कई अन्य MariaDB सुविधाओं और क्षमताओं पर और भी अधिक सामग्री के लिए 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. कैसे TO_DAYS () मारियाडीबी में काम करता है

  2. स्वीडन की नई इलेक्ट्रॉनिक पहचान फ़्रीजा eID . के पीछे डेटाबेस स्वचालन

  3. कैसे दूसरा () मारियाडीबी में काम करता है

  4. मारियाडीबी में एक तिथि से लघु माह का नाम प्राप्त करने के 2 तरीके

  5. मारियाडीबी JSON_CONTAINS () समझाया गया