首页 > 数据库 >linux cpp g++ mysqlconnector

linux cpp g++ mysqlconnector

时间:2023-07-21 19:12:35浏览次数:43  
标签:std now chrono ++ column time cpp include mysqlconnector

1.install mysql in ubuntu;

2install mysqlconnector;

sudo apt install libmysqlclient-dev

3.complete code

#include <algorithm>
#include <chrono>
#include <cstdio>
#include <cstdint>
#include <cstdlib>
#include <ctime>
#include <fstream>
#include <iomanip>
#include <iostream>
#include <random>
#include <sstream>
#include <thread>
#include <vector>
#include <mysql_connection.h>
#include <mysql_driver.h>
#include <mysql_error.h>
// #include <cppconn/driver.h>
// #include <cppconn/connection.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/resultset_metadata.h>
// #include <cppconn/sqlstring.h>

std::string get_time_now()
{
    std::chrono::time_point<std::chrono::high_resolution_clock> 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");
    return ss.str();
}

void connect_mysql()
{
    try
    {
        sql::Driver *driver;
        sql::Connection *conn;
        sql::Statement *stmt;
        sql::ResultSet *res;

        driver = sql::mysql::get_driver_instance();
        conn = driver->connect("tcp://127.0.0.1:3306", "root", "password!");
        conn->setSchema("mysql");
        stmt = conn->createStatement();
        res = stmt->executeQuery("select * from db;");
        sql::ResultSetMetaData *rsmd = res->getMetaData();
        int column_count = rsmd->getColumnCount();
        std::cout << "Number of rows : " << res->rowsCount() << std::endl;
        std::cout << "Number of columns : " << column_count << std::endl;

        while (res->next())
        {
            for (int i = 1; i < column_count; i++)
            {
                std::cout << res->getString(i) << ",";
            }
            std::cout << res->getString(column_count) << std::endl;
        }
        delete res;
        delete stmt;
        delete conn;
    }
    catch (sql::SQLException &e)
    {
        std::cout << "# ERR: SQLException in " << __FILE__ << "(" << __FUNCTION__ << ") on line " << __LINE__ << std::endl;
        std::cout << "# ERR: " << e.what() << " (MySQL error code: " << e.getErrorCode() << ", SQLState: " << e.getSQLState() << " )" << std::endl;
    }
}

int main(int args, char **argv)
{
    connect_mysql();
    std::cout << get_time_now() << ",finished in " << __FUNCTION__ << std::endl;
}

 

Compile

g++-12 -std=c++2a -I. *.cpp -o h1 -lmysqlcppconn

 

Run

./h1;

  

 

  

标签:std,now,chrono,++,column,time,cpp,include,mysqlconnector
From: https://www.cnblogs.com/Fred1987/p/17572231.html

相关文章

  • 多线程下,C++如何调用Python脚本的方法
    视频教程:多线程场景下,用C++调用Python脚本的方法Git:https://github.com/JasonLiThirty/C-andPython接口函数Python3.6提供给C/C++接口函数,基本都是定义pylifecycle.h,pythonrun.h,ceval.h中。Py_Initialize()和Py_Finalize()C++应用程序调用Python脚本之前,必须先调用Py_I......
  • Ubuntu更换cuda版本,gcc,g++版本
    Ubuntu更换cuda版本,gcc,g++版本更换cuda版本这个比较简单可以看到/usr/local下面有一个软链接,更换到我们需要的版本即可,cuda对应版本安装可参考官网。创建软连接:(创建之前先删除之前的软连接,然后创建新的软连接)sudorm-rfcudasudoln-s/usr/local/cuda-11.3//usr/loc......
  • C++实现公司设备管理系统
    1.1.1设计内容:编写一个简单的实验室设备管理程序,帮助管理实验室设备信息。要求具有设备信息管理的功能。其中包括设备信息的录入、删除、查询和修改等功能。还应包括对实验室信息管理的功能。其中包括对实验室信息的录入、删除、修改和查询等功能。1.2任务和要求运用面向对......
  • c++入门以及简单顺序结构-习题
    1.c++入门以及简单顺序结构-习题1.计算(a+b)*c的值inta,b,c;cin>>a>>b>>c;cout<<(a+b)*c;2.带余除法inta,b;cin>>a>>b;cout<<a/b<<""<<a%b;//c++中取余结果正负只与%前面的正负有关系 cout<<5%2<<endl;//输出1 c......
  • C++ 操作文本文件
    C++操作文本文件C++把IO封装成类33​操作文本文件需要包含头文件#include<fstream>​写文件(输出流)步骤(四步)创建输出流对象​ofstreamfp;//创建输出流对象​打开文件,⚠打开模式缺省时如果文件不存在就创建,文件存在则截断内容​fp.open("文件路径",打开模式);......
  • C++的四种强制类型转换
    将类型名作为强制转换的语法是C语言保留下来的,C++有自己独有的类型转换,就是四种cast。它们都有着统一的语法,即xx_cast<typename>(expression),可以将expression转换成typename的类型。static_cast顾名思义,静态转换,通常用于内置类型的转换。但是不能用于不同类型的指针/引用之间......
  • C++ 不用现成的类库 实现两个非负整数的字符串的和
    给定两个非负整数的字符串num1 和num2 ,返回num1与num2的和Note: num1 和num2 长度都小于5100. num1 和num2 只包含0-9的数字.num1 和num2 开头不为0.不能用现成的类库直接将输入的字符串转换成整数思路:从低位开始遍历相加,和≥10标记add_val=1,<10标记add_val=......
  • C++数值计算——矩阵类的实现(一)
    本系列博客将利用C++实现一系列数值算法。数值算法离不开矩阵,但是C++并未自带矩阵这一对象,直接使用数组又会带来诸多不便,因此我们需要做一些预备工作————编写一个矩阵类,实现矩阵的基本功能。一般来说,读者可以直接使用Eigen库进行矩阵计算,从头开始造轮子仅仅是为了满足笔者个人......
  • 7.20 c++
    //高精度加法#include<bits/stdc++.h>usingnamespacestd;intmain(){chara1[5005],b1[5005];inta[5005],b[5005],c[5005];intla,lb,lc=1,x=0,i;memset(a,0,sizeof(a));memset(b,0,sizeof(b));memset(c,0,sizeof(c));c......
  • c++ day 13
    今天来认识c++里面的迭代器C++迭代器(Iterator)是一种用于遍历容器(如数组、向量、链表等)中元素的抽象概念。它允许你通过简单的接口在容器中移动,并访问容器中的元素,而无需了解底层数据结构的细节。迭代器提供了一种统一的方式来访问不同类型容器的元素,使得代码更加灵活和可复用。......