install mysqlcppconn library and retrieve from mysql database table,insert

Fred1987 / 2023-09-11 / 原文

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;

 

#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 insert_sql(const int &len)
{
    sql::Driver *driver;
    sql::Connection *conn;
    sql::Statement *stmt;

    driver=get_driver_instance();
    conn=driver->connect("127.0.0.1:3306", "Fred", "password");
    conn->setSchema("db");
    std::stringstream ss;
    ss << "insert into t1 (name,author,content,isbn,topic,summary) values ";
    for (int i = 0; i < len; i++)
    {
        ss <<"('"<< get_uuid_value()<< "','" << get_uuid_value() << "','" << get_uuid_value() << "','"
           << get_uuid_value() << "','" << get_uuid_value() << "','" << get_uuid_value() << "'),";
    }

    std::string insertsql=ss.str();
    
    int index=insertsql.find_last_of(",");
    insertsql=insertsql.substr(0,index);
    // std::cout<<insertsql<<" at "<<__LINE__<<std::endl;
    std::cout<<len<<",at "<<__LINE__<<std::endl;
    stmt=conn->createStatement();
    int result=stmt->execute(insertsql);
    std::cout<<"inserted result:"<<result<<std::endl;
    conn->close();
    std::cout<<get_time_now()<<",finished in "<<__FUNCTION__<<std::endl;
}

int main(int args, char **argv)
{
    insert_sql(atoi(argv[1]));
    std::cout << "Finished in " << __FUNCTION__ << std::endl;
}
g++-12 -std=c++23 -I. *.cpp -o h1 -luuid -lmysqlcppconn;
fred@fred:~/C$ g++-12 -std=c++23 -I. *.cpp -o h1 -luuid -lmysqlcppconn;
fred@fred:~/C$ ./h1 1000000;
1000000,at 111
inserted result:0
20230911014951_189573294,finished in insert_sql
Finished in main
fred@fred:~/C$