#include "stdafx.h" #include "MySQLDB.h" MySQLDB::MySQLDB() { //Õýʽ¿ªÊ¼¹¹Ôì if (init_mysql()) { if (connect_mysql()) { //Á¬½Ó³É¹¦ cout << "mysql connect success..." << endl; } else { //Á¬½Óʧ°Ü cout << "mysql connect fail !" << endl; } } else { //³õʼ»¯Ê§°Ü cout << "mysql init fail !" << endl; } } MySQLDB::~MySQLDB() { mysql_close(my_mysql);//¹Ø±Õ } /* Êý¾Ý¿â²éѯ */ size_t MySQLDB::execSQL(const string & sql, vector>& result) { //¸ù¾Ý×Ö·û´®sql£¬·¢¸øÊý¾Ý¿â //µÃµ½½á¹û¼¯ //½âÎö½á¹û¼¯£¬ÌáÈ¡Êý¾Ýµ½resultÖÐ //·µ»ØµÃµ½µÄ½á¹û¼¯µÄÊý¾ÝÐÐÊý if (mysql_real_query(my_mysql, sql.c_str(),(unsigned long)sql.length())) { //·µ»ØÖµÎª·Ç0£¬´ú±íʧ°Ü cout << "execSQL fail !" << mysql_error(my_mysql) << endl; return -1; } //SQLÓï¾ä·¢Ëͳɹ¦ //È¡µÃ½á¹û¼¯¡¾×¢Ò⣬ÓÃÍêºó£¬ÐèÒªÊÍ·Å¡¿ MYSQL_RES * res = mysql_store_result(my_mysql); //Ôٵõ½½á¹û¼¯µÄÁÐÊý£¬·½±ãÈ·¶¨Ò»¸övectorÖеÄstringÐÍÊý¾ÝµÄ¸öÊý unsigned int res_colomn_count = mysql_num_fields(res); //µÃµ½½á¹û¼¯µÄÐÐÊý MYSQL_ROW row; //Ñ­»·¶Á³ö½á¹û¼¯µÄ¸÷¸öÐУ¬ÁеÄÊý¾Ý while ( (row = mysql_fetch_row(res)) ) //ÅжÏÖеÄÕâ¸öÓï¾äµÄЧ¹ûÊÇ×Ô¶¯µÄ£¬ÔÚÿ´ÎÑ­»·ºó£¬ÔÙ´ÎÀ´µ½ÕâÀ·µ»ØµÄ½á¹ûÊDz»Ò»ÑùµÄ //ÿһ´Î£¬¶¼»á·µ»Ø ´æ´¢×ÅÕâÒ»ÐеÄËùÓÐÁеÄÊý¾ÝµÄ"Êý¾Ý½áºÏÌå"Ö¸Õ룬¸ñʽ¾ÍÏñ×Ö·û´®Êý×éÒ»Ñù£¨char **£©== MYSQL_ROW //Ö±µ½£¬×ßµ½×îºóÒ»Ðкó£¬Ã»ÓÐеÄÐÐʱ£¬·µ»ØNULL£¬while¾Í»á½áÊø { vector one_line; for (unsigned int i = 0;i < res_colomn_count;i++) { one_line.push_back(row[i]); } result.push_back(one_line); } //ÊͷŽá¹û¼¯ mysql_free_result(res); //·µ»Ø½á¹û¼¯µÄÐÐÊý return result.size(); } /* Êý¾Ý¿â²åÈë */ uint64_t MySQLDB::exec_insSQL(const string & sql, char *info) { //¹Ø¼üº¯Êý if (mysql_real_query(my_mysql, sql.c_str(), (unsigned long)sql.length())) { //·µ»ØÖµÎª·Ç0£¬´ú±íʧ°Ü,¼Ç¼´íÎóÐÅÏ¢ strcpy_s(info,100, mysql_error(my_mysql)); cout << "execSQL fail !" << info << endl; return 0; } //³É¹¦·µ»ØÕý³£id£¬Ê§°Ü·µ»Ø0 strcpy_s(info, 100, ""); return mysql_insert_id(my_mysql); } /* ³õʼ»¯ */ bool MySQLDB::init_mysql() { my_mysql = mysql_init(nullptr);//Ö¸Õ룺³õʼ»¯,·µ»ØµÄÊÇMYSQLÖ¸ÕëÀàÐÍ if (my_mysql != nullptr) { return true; } return false; } /* Á¬½Ó */ bool MySQLDB::connect_mysql() { //Á¬½ÓMYSQL MYSQL * conn = mysql_real_connect( my_mysql, //mysql_initµÃµ½µÄ¾ä±ú "127.0.0.1", //µÇ½µÄmysqlµÄIPµØÖ· "root", //µÇ¼ʹÓõÄÓû§Ãû "066733", //µÇ¼ʹÓõÄÓû§ÃÜÂë "face_link_ai", //Êý¾Ý¿âµÄÃû³Æ 3306, //¶Ë¿ÚºÅ nullptr, //**ÎÒÃÇʹÓÃĬÈÏ 0 //**ÎÒÃÇʹÓÃĬÈÏ ); if (conn) { //Á¬½ÓÉÏÁË //ÉèÖÃÊý¾Ý¿â´«Êä¹ýÀ´µÄ×Ö·û±àÂë²ÉÓÃGBK string sql = "set names gbk";//MYSQLµÄÃüÁÉèÖÃMySQLÁ¬½ÓµÄ×Ö·û¼¯ÎªGBK±àÂë /* ÕâÌõÃüÁî¸æËßMySQL·þÎñÆ÷£º ¿Í»§¶Ë·¢Ë͵ÄSQLÓï¾äʹÓÃGBK±àÂë Ï£Íû·þÎñÆ÷·µ»ØµÄ½á¹ûҲʹÓÃGBK±àÂë ·þÎñÆ÷ºÍ¿Í»§¶ËÖ®¼äµÄͨÐÅʹÓÃGBK±àÂë */ if (mysql_real_query(my_mysql,sql.c_str(),(unsigned long)sql.length())) { //³É¹¦·µ»Ø0£¬if¿éÓï¾ä²»Ö´ÐУ¬Ê§°Ü²ÅÖ´ÐÐ cout << "set names gbk --- error : " << mysql_error(my_mysql) << endl; return false; } return true; } return false; }