• C++ mysql read table


    //Utill.h
    #ifndef Util_H
    #define Util_H
    
    #include <chrono>
    #include <ctime>
    #include <fstream> 
    #include <iostream>
    #include "mysql_connection.h"
    #include <cppconn/driver.h>
    #include <cppconn/exception.h>
    #include <cppconn/resultset.h>
    #include <cppconn/statement.h>
    #include <cppconn/prepared_statement.h>
    #include <sstream>
    #include <stdlib.h>
    #include <thread>
    #include <unistd.h>
    #include <uuid/uuid.h>
    #include <vector>
    
    using namespace std;
    
    class Util
    {
    public:
        static char *uuidValue;
        static char *dtValue;
        char *getTime();
        char *getUuid(); 
        void readSQL5();
    };
    #endif
    
    
    
    
    //Util.cpp
    #include "Model/Util.h"
    
    char *Util::dtValue = (char *)malloc(20);
    char *Util::uuidValue = (char *)malloc(40);
    
    void Util::readSQL5()
    {
        try
        {
            sql::Driver *driver;
            sql::Connection *conn;
            sql::Statement *stmt;
            sql::PreparedStatement *pstmt;
            sql::ResultSet *res;
            sql::PreparedStatement *tablePstmt;
            sql::ResultSet *tableRes;
    
            driver = get_driver_instance();
            conn = driver->connect("tcp://127.0.0.1:3306", "root", "password");
            conn->setSchema("db");
    
            string selectTable = "select table_name from information_schema.tables where table_schema='db'";
            pstmt = conn->prepareStatement(selectTable);
            res = pstmt->executeQuery();
    
            vector<string> tableVec;
            while (res->next())
            {
                tableVec.push_back(res->getString(1));
            }
    
            vector<string>::iterator itr = tableVec.begin();
            cout << "Table:";
            while (itr != tableVec.end())
            {
                cout << *itr << "\t";
                itr++;
            }
            cout << endl << endl;
    
            uint64_t num = 0;
            int loop = 0;
            for (auto &tableName : tableVec)
            { 
                string sql = "select * from " + tableName;
                tablePstmt = conn->prepareStatement(sql);
                tableRes = tablePstmt->executeQuery();
                while (tableRes->next())
                {
                    if (++num % 500000 == 0)
                    {
                        cout <<"Loop="<<++loop << ",Num=" << num << ",Index=" << tableRes->getInt(1) << ",Id=" << tableRes->getInt64(2)
                             << ",Name=" << tableRes->getString(3) << ",Title=" << tableRes->getString(4) << endl;
                    }
                }
                cout << getTime() << ",finished in retrieving from " << tableName << endl<<endl;
            }
            conn->close();
            cout << "IsClosed=" << conn->isClosed() << endl;
            cout << getTime() << ",finished in void Util::readSQL5()!" << endl;
        }
        catch (sql::SQLException &ex)
        {
            cout << "#ERR: SQLException in " << __FILE__ << "," << __FUNCTION__ << "," << __LINE__ << endl;
            cout << ex.what() << endl;
            cout << "Error code:" << ex.getErrorCode() << ",state:" << ex.getSQLState() << endl;
            return;
        }
    }
    
    char *Util::getTime()
    {
        time_t rawTime = time(NULL);
        struct tm tmInfo = *localtime(&rawTime);
        strftime(dtValue, 20, "%Y%m%d%H%M%S", &tmInfo);
        return dtValue;
    }
    
    char *Util::getUuid()
    {
        uuid_t newUUID;
        uuid_generate(newUUID);
        uuid_unparse(newUUID, uuidValue);
        return uuidValue;
    }
    

      

    //main.cpp
    
    #include "Model/Util.h"
    
    void readTable5();
    
    
    int main(int args,char **argv)
    {
        try
        {
            readTable5();
        }
        catch(const std::exception& e)
        {
            std::cerr << e.what() << '\n';
        }
        
    }
    
    void readTable5()
    {
        Util ul;
        ul.readSQL5();
    }

    Compile:

    g++ -g -std=c++2a -I. *.cpp ./Model/*.cpp -o h1 -luuid -lpthread -lmysqlcppconn;

    Run

    time ./h1 -1;

  • 相关阅读:
    18寒假第一测
    P1932 A+B A-B A*B A/B A%B Problem
    POJ 2823 Sliding Window
    堆排序
    [LeetCode] Candy
    [LeetCode] Single Number II
    [LeetCode] Single Number
    [LeetCode] Binary Tree Postorder Traversal
    [LeetCode] Binary Tree Preorder Traversal
    [LeetCode] Insertion Sort List
  • 原文地址:https://www.cnblogs.com/Fred1987/p/16378165.html
Copyright © 2020-2023  润新知