cppconn resultsetmetadata get columns count,get column name,resultset get value
//Model/mysqlhelper.h #ifndef __mysqlhelper_h__ #define __mysqlhelper_h__ #include <chrono> #include <ctime> #include <fstream> #include <iomanip> #include <iostream> #include <sstream> #include <thread> #include <unistd.h> #include <uuid/uuid.h> #include <mysql/mysql.h> #include <cppconn/connection.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/resultset_metadata.h> using namespace std; using namespace std::chrono; class mysqlhelper { public:
string get_time_now();
void mysqlreaddemo();
}; #endif //model/mysqlhelper.cpp #include "model/mysqlhelper.h"
string mysqlhelper::get_time_now()
{
chrono::time_point now = system_clock::now();
chrono::microseconds ms = duration_cast<milliseconds>(now.time_since_epoch()) % 1000;
time_t rawTime = system_clock::to_time_t(now);
struct tm tmInfo = *localtime(&rawTime);
stringstream ss;
ss << std::put_time(&tmInfo, "%Y%m%d%H%M%S") << std::setfill('0') << std::setw(3) << ms.count();
string dtStr = ss.str();
ss.str(std::string());
return dtStr;
}
void mysqlhelper::mysqlreaddemo() { try { sql::Driver *driver; sql::Connection *conn; sql::ResultSet *res; sql::Statement *stmt; sql::PreparedStatement *pstmt; sql::ResultSetMetaData *resMetaData; driver = get_driver_instance(); conn = driver->connect("tcp://127.0.0.1:3306", "username", "password"); conn->setSchema("db"); stmt = conn->createStatement(); res = stmt->executeQuery("select Idx,Id,Author,Comment,Content,Name,Title from Book"); resMetaData=res->getMetaData(); unsigned int columnsCount= resMetaData->getColumnCount(); while (res->next()) { for(int i=1;i<columnsCount;i++) { cout<<resMetaData->getColumnName(i).asStdString()<<":"<<res->getString(i)<<","; } cout<<resMetaData->getColumnName(columnsCount).asStdString()<<":"<<res->getString(columnsCount); cout<<endl<<endl; } delete res; delete stmt; delete conn; } catch (const sql::SQLException &e) { std::cerr << e.what() << '\n'; cout<<e.getErrorCode()<<endl<<e.getSQLState()<<endl<<e.getSQLStateCStr()<<endl; } cout<<get_time_now()<<",finished in "<<__FUNCTION__<<","<<__LINE__<<endl; } //main.cpp #include "model/mysqlhelper.h" void mysqlreaddemo() { mysqlhelper mh; mh.mysqlreaddemo(); } int main(int args, char **argv) { mysqlreaddemo(); }
Compile
g++ -g -std=c++2a -I. *.cpp ./model/*.cpp -o h1 -luuid -ljsoncpp -lmysqlcppconn
Run
./h1
Query from mysql table
select Idx,Id,Author,Comment,Content,Name,Title from Book;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现