#include #include #include using std::cout; using std::endl; int main() { // 1. 初始化mysql句柄 // MYSQL *mysql_init(MYSQL *mysql) MYSQL *mysql = mysql_init(nullptr); if(mysql == nullptr) { cout << "mysql init failed" << endl; return -1; } // 2. 连接mysql数据库 // MYSQL *mysql_real_connect(...) const std::string host = "127.0.0.1"; const std::string user = "thj"; const std::string password = "Abcd1234@"; const std::string db = "gobang"; unsigned int port = 4106; mysql = mysql_real_connect(mysql, host.c_str(), user.c_str(), password.c_str(), db.c_str(), port, nullptr, 0); if(mysql == nullptr) { cout << "connection mysql server failed" << endl; mysql_close(mysql); return -1; } // 3. 设置客户端字符集 // int mysql_set_character_set(MYSQL *mysql, const char *csname) if (mysql_set_character_set(mysql, "utf8") != 0) { cout << "set client character failed: " << mysql_error(mysql) << endl; } // 4. 选择要操作的数据库 // int mysql_select_db(MYSQL *mysql, const char *db) // mysql_select_db(mysql, db.c_str()); // 5. 执行sql语句 -- 增删改 // int mysql_query(MYSQL *mysql, const char *stmt_str) if(mysql_query(mysql, "insert into user values(null, '张三', 18, '11122223333')") != 0) { cout << "sql query failed: " << mysql_error(mysql) << endl; } // 6. 执行sql语句 -- 查询 if (mysql_query(mysql, "select * from user") != 0) { cout << "sql query failed: " << mysql_error(mysql) << endl; } // 6.1 将查询结果转储到本地 // MYSQL_RES *mysql_store_result(MYSQL *mysql) MYSQL_RES *res = mysql_store_result(mysql); if(res == nullptr) { cout << "store query result failed: " << mysql_error(mysql) << endl; mysql_close(mysql); return -1; } // 6.2 获取结果集的行数与列数 // uint64_t mysql_num_rows(MYSQL_RES *result) // unsigned int mysql_num_fields(MYSQL_RES *result) int rowCount = mysql_num_rows(res); int colCount = mysql_num_fields(res); // 6.3 打印结果集中的列属性信息 // MYSQL_FIELD *mysql_fetch_field(MYSQL_RES *result) 一次获取一列 // MYSQL_FIELD *mysql_fetch_fields(MYSQL_RES *result) 一次获取全部 for(int i = 0; i < colCount; i++) { // 自动迭代 MYSQL_FIELD *field = mysql_fetch_field(res); cout << field->name << '\t'; } cout << endl; // 一次获取全部列字段的属性信息,然后分别打印 // MYSQL_FIELD *total_fields = mysql_fetch_fields(res); // for(int i = 0; i < colCount; i++) // { // cout << total_fields[i].name << '\t'; // } // cout << endl; // 6.4 打印结果集中的行内容 // MYSQL_ROW mysql_fetch_row(MYSQL_RES *result) for(int i = 0; i < rowCount; i++) { // 一行的所有内容 -- 自动迭代 MYSQL_ROW row = mysql_fetch_row(res); for(int j = 0; j < colCount; j++) { // 一行内容中的某一列的内容 cout << row[j] << '\t'; } cout << endl; } // 7. 释放结果集 mysql_free_result(res); // 8. 关闭mysql连接 mysql_close(mysql); return 0; }