C++ connects to MySQL for your reference. The specific contents are as follows Defining the MySQLCon Class class MySQLCon { MYSQLmysql; public: int errornum; string errortext; public: //Initialize MySQLCon(); //Close the database~MySQLCon(); //Connect to database bool OpenConn(const char* host,const char* username,const char* pwd,const char* dbName,unsigned port=0); void GetErrorText();//Get error text void Close();//Close database bool ExecuteSQL(const char* sql);//Use SQL statement, unable to receive data bool QureySQL(const char* sql, vector<vector<string>>& resultSet);//Use SQL statement and receive data (select statement) }; Initialization Operation MySQLCon::MySQLCon() { if (mysql_library_init(0, nullptr, nullptr)) { cout << "CAPI initialization failed" << std::endl; getchar(); exit(1); } if (mysql_init(&mysql)==nullptr) { cout << "Failed to initialize database variables" << std::endl; getchar(); exit(1); } if (mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, "gbk")) { cout << "Failed to set connection options" << std::endl; getchar(); exit(1); } } Connecting to MySQL Server //The parameters are host, username, password, database name, port number bool MySQLCon::OpenConn(const char* host, const char* username, const char* pwd, const char* dbName, unsigned port) { //Connect to the database if (mysql_real_connect(&mysql, host, username, pwd, dbName, port, nullptr, 0)==nullptr) { cout << "Failed to connect to MySQL server" << std::endl; //Get the error text GetErrorText(); exit(1); return false; } return true; } Get MySQL error information void MySQLCon::GetErrorText() { //Get the error code errornum = mysql_errno(&mysql); //Get the error text errortext = mysql_error(&mysql); //Print error code cout << "error num: " << errornum << std::endl; //Print error text cout << "error text: " << errortext << std::endl; getchar(); } Using SQL statements in C++ bool MySQLCon::ExecuteSQL(const char* sql) { //Use SQL statement but cannot receive data if (mysql_real_query(&mysql, sql, strlen(sql))) { GetErrorText(); return false; } return true; } bool MySQLCon::QureySQL(const char* sql, vector<vector<string>>& resultSet) { //Use SQL statements and receive data into vector container if (mysql_real_query(&mysql, sql, strlen(sql))) { GetErrorText(); return false; } //Create a MYSQL result set MYSQL_RES* result = mysql_store_result(&mysql); //Get the total number of rows and columns unsigned int rows = mysql_num_rows(result); unsigned int cols = mysql_num_fields(result); //Used to record a piece of data in the result set MYSQL_ROW row; while (row = mysql_fetch_row(result)) { //Create a vector container to store the data in row vector<string> lineDate; for (int i = 0; i < cols; i++) { if (row[i]) { //Store the data of each column in row into lineDate lineDate.push_back(row[i]); } else { lineDate.push_back(""); } } //Store the entire line of data in resultSet resultSet.push_back(lineDate); } //Release the result setmysql_free_result(result); return true; } Close the database void MySQLCon::Close() { mysql_close(&mysql); } MySQLCon::~MySQLCon() { Close(); mysql_library_end(); } Example main function int main() { MySQLCon c_apiconn; c_apiconn.OpenConn("127.0.0.1", "root", "136119", "fancy"); string sql = "use fancy;" vector<vector<string>> data; c_apiconn.ExecuteSQL(sql.c_str()); sql = "select * from fancy.info;"; c_apiconn.QureySQL(sql.c_str(), data); for (int i = 0; i < data.size(); i++) { for (int j = 0; j < data[i].size(); j++) { cout << data[i][j] << "\t"; } cout << endl; } return 0; } Output The above is the full content of this article. I hope it will be helpful for everyone’s study. I also hope that everyone will support 123WORDPRESS.COM. You may also be interested in:
|
<<: How to configure port forwarding for docker on CentOS 7 to be compatible with firewall
>>: 22 Vue optimization tips (project practical)
This article shares the specific code of js to ac...
Regarding uninstalling the previously installed v...
1. What is Continuous Delivery The software produ...
Definition of Generics // Requirement 1: Generics...
Using the official MySQL image requires some modi...
This article mainly introduces the analysis of th...
(1) Reduce HTTP requests. (Merge resource files a...
1. What is the hyperlink icon specification ?<...
Table of contents Vite project build optimization...
This article example shares the specific code of ...
Use event delegation to implement message board f...
introduce Have you ever spent a whole day trying ...
Currently, most CPUs support floating-point units...
As the title says, otherwise when the page is revi...