install mysqlcppconn library and retrieve from mysql database table

发布时间 2023-09-11 01:33:53作者: Fred1987
sudo apt install libmysqlcppconn-dev
#include <algorithm>
#include <atomic>
#include <barrier>
#include <bitset>
#include <chrono>
#include <ctime>
#include <fstream>
#include <functional>
#include <hashtable.h>
#include <iomanip>
#include <iostream>
#include <limits>
#include <sstream>
#include <thread>
#include <uuid/uuid.h>
#include <mysql/my_command.h>
#include <cppconn/connection.h>
#include <mysql/mysql.h>
#include <mysql/my_command.h>
#include <cppconn/driver.h>
#include <cppconn/exception.h>
#include <cppconn/metadata.h>
#include <cppconn/parameter_metadata.h>
#include <cppconn/prepared_statement.h>
#include <cppconn/resultset.h>
#include <cppconn/sqlstring.h>
#include <cppconn/statement.h>

std::string get_time_now()
{
    auto now = std::chrono::high_resolution_clock::now();

    time_t raw_time = std::chrono::high_resolution_clock::to_time_t(now);
    struct tm tm_info = *localtime(&raw_time);
    std::stringstream ss;
    ss << std::put_time(&tm_info, "%Y%m%d%H%M%S");
    auto seconds = std::chrono::duration_cast<std::chrono::seconds>(now.time_since_epoch());
    auto mills = std::chrono::duration_cast<std::chrono::milliseconds>(now.time_since_epoch());
    auto micros = std::chrono::duration_cast<std::chrono::microseconds>(now.time_since_epoch());
    auto nanos = std::chrono::duration_cast<std::chrono::nanoseconds>(now.time_since_epoch());
    ss << "_"
       << std::setw(3) << std::setfill('0') << (mills.count() - seconds.count() * 1000)
       << std::setw(3) << std::setfill('0') << (micros.count() - mills.count() * 1000)
       << std::setw(3) << std::setfill('0') << (nanos.count() - micros.count() * 1000);
    return ss.str();
}

char *uuid_value = (char *)malloc(40);
char *get_uuid_value()
{
    uuid_t new_uuid;
    uuid_generate(new_uuid);
    uuid_unparse(new_uuid, uuid_value);
    return uuid_value;
}
 
void select_mysql()
{
    sql::Driver *driver;
    sql::Connection *conn;
    sql::ResultSet *reset;
    sql::Statement *stmt;
    sql::ResultSetMetaData *metaData;

    driver=get_driver_instance();    
    conn=driver->connect("127.0.0.1:3306","Fred","password");    
    conn->setSchema("db");
    std::string select_sql="select * from t1 order by id desc limit 100;";
    stmt=conn->createStatement(); 
    reset=stmt->executeQuery(select_sql);
    metaData=reset->getMetaData();
    int rows_count=reset->rowsCount();
    int columns=metaData->getColumnCount();
    int rowIndex=0;
    while(reset->next())
    { 
        for(int j=1;j<columns;j++)
        { 
            std::cout<<reset->getString(j)<<"\t";
        }
        std::cout<<std::endl;
    } 
    
    conn->close();
    std::cout<<std::boolalpha<<conn->isClosed()<<std::endl;
    std::cout<<get_time_now()<<","<<__FUNCTION__<<std::endl;
}

int main(int args, char **argv)
{
    select_mysql();
    std::cout << "Finished in " << __FUNCTION__ << std::endl;
}
#include <mysql/my_command.h>
#include <cppconn/connection.h>
#include <mysql/mysql.h>
#include <mysql/my_command.h>
#include <cppconn/driver.h>
#include <cppconn/exception.h>
#include <cppconn/metadata.h>
#include <cppconn/parameter_metadata.h>
#include <cppconn/prepared_statement.h>
#include <cppconn/resultset.h>
#include <cppconn/sqlstring.h>
#include <cppconn/statement.h>

void select_mysql()
{
    sql::Driver *driver;
    sql::Connection *conn;
    sql::ResultSet *reset;
    sql::Statement *stmt;
    sql::ResultSetMetaData *metaData;

    driver=get_driver_instance();    
    conn=driver->connect("127.0.0.1:3306","Fred","password");    
    conn->setSchema("db");
    std::string select_sql="select * from t1 order by id desc limit 100;";
    stmt=conn->createStatement(); 
    reset=stmt->executeQuery(select_sql);
    metaData=reset->getMetaData();
    int rows_count=reset->rowsCount();
    int columns=metaData->getColumnCount();
    int rowIndex=0;
    while(reset->next())
    { 
        for(int j=1;j<columns;j++)
        { 
            std::cout<<reset->getString(j)<<"\t";
        }
        std::cout<<std::endl;
    } 
    
    conn->close();
    std::cout<<std::boolalpha<<conn->isClosed()<<std::endl;
    std::cout<<get_time_now()<<","<<__FUNCTION__<<std::endl;
}
g++-12 -std=c++23 -I. *.cpp -o h1 -luuid -lmysqlcppconn;