C++調用MySql


參考了下面兩個博客:

http://www.cnblogs.com/wunaozai/p/3618383.html

http://zhmy.michael.blog.163.com/blog/static/861578792012101244715692/

1. 首先安裝C/C++ API:

sudo apt-get install mysql-server libmysql++-dev

2. 將lib文件拷到公用文件夾:
sudo cp /usr/lib/mysql/* /usr/lib/

3. 寫好C++代碼test.cpp,功能是更改數據庫yg_sql中yg_user_images表中的score 

#include <iostream>
#include <mysql/mysql.h>

using namespace std;

int main(int argc,char *argv[])
{
    MYSQL conn;
    int res;
    mysql_init(&conn);
    //222555yq為數據庫的進入密碼,yg_sql為數據庫名
    if(mysql_real_connect(&conn,"localhost","root","222555yq","yg_sql",0,NULL,CLIENT_FOUND_ROWS)) 
    {
         cout << "connect success!" << endl;
         //將數據庫yg_user_images表中字段id為1所對應字段score的數據修改為100
         res=mysql_query(&conn,"update yg_user_images set score = '100' where id = '1'"); 
         //判斷是否讀取成功
         if(res)
             cout << "error" << endl;
         else
             cout << "OK" << endl;
         mysql_close(&conn);
    }
    return 0;
}

 

4. 然后編譯:

g++ test.cpp `mysql_config --cflags --libs` -o test

5. 執行:

./test

再次查看數據庫發現數據庫中對應的score值被修改了

 

C++讀取數據庫某個字段數據的代碼如下:

#include <iostream>
#include <string>
#include <mysql/mysql.h>

using namespace std;

int main(int argc,char *argv[])
{
    MYSQL conn;
    int res;
    MYSQL_RES *result = NULL;
    MYSQL_FIELD *field = NULL;
    mysql_init(&conn);
    //222555yq為數據庫的進入密碼,yg_sql為數據庫名
    if(mysql_real_connect(&conn,"localhost","root","222555yq","yg_sql",0,NULL,CLIENT_FOUND_ROWS)) 
    {
         cout << "connect success!" << endl;
         res = mysql_query(&conn,"select img_url from yg_user_images"); //讀取數據庫yg_sql的yg_user_images表中圖片路徑字段下的數據(路徑)
         //判斷是否讀取成功
         if(res)
             cout << "error" << endl;
         else
             cout << "OK" << endl;
         //保存結果    
         result = mysql_store_result(&conn);
         //路徑數據的個數
         int rowcount = mysql_num_rows(result);
         cout << rowcount << endl;
         //字段的個數
         int fieldcount = mysql_num_fields(result);
         cout << fieldcount << endl;
         //顯示所有字段
         for(int i = 0; i < fieldcount; i++)
         {
             field = mysql_fetch_field_direct(result,i);
             cout << field->name << "\t\t";
         }
         cout << endl;
         //顯示各個字段下的所有數據
         MYSQL_ROW row = NULL;
         row = mysql_fetch_row(result);
         while(NULL != row)
         {
             for(int i=0; i<fieldcount; i++)
             {
                 cout << row[i] << "\t\t"; 
             }
             cout << endl;
             row = mysql_fetch_row(result);
         }
         mysql_close(&conn);
    }
    return 0;
}

按照上面步驟編譯運行,會打印出如下結果:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM