C/C++連接MySQL數據庫和查詢操作案例!!

----------------------------------------------------------------------------------------------------------------------------------------

C/C++連接MySQL數據庫,MySQL專門有一套自己的C風格的代碼,使用起來非常簡單!基本套路是:在文檔中包含一個*.h的mysql頭文件,包含一個mysql的lib文件,然後進行如下五個步驟即可:1、初始化;2、連接數據庫;3、執行sql查詢語句;4、獲取查詢值;5、關閉。

----------------------------------------------------------------------------------------------------------------------------------------




C/C++連接MySQL數據庫:


步驟一:首先安裝MySQL:

網上有很多教程,這裏就不再花篇幅贅述了。官網下載地址: https://dev.mysql.com/downloads/mysql/

我的安裝目錄:“C:\Program Files\MySQL\MySQL Server 5.7


步驟二:拷貝MySQL安裝目錄中的一些文件到項目工程目錄下:

1、把“C:\Program Files\MySQL\MySQL Server 5.7\lib”下的libmysql.dll複製到工程的Debug文件夾裏;

2、把“C:\Program Files\MySQL\MySQL Server 5.7\lib”下的libmysql.lib複製到工程的lib文件夾裏;

3、把“C:\Program Files\MySQL\MySQL Server 5.7\include”下的所有內容複製到工程的include文件夾裏。


步驟三:設置引用文件的環境變量:

1、設置“VC++目錄”:

在“解決方案資源管理器”中右鍵該項目,依次選擇【屬性】——【配置屬性】——【VC++目錄】,如下圖:


①、點擊【包含目錄】右邊的下拉按鈕,然後單擊【<編輯>】,將工程項目“include目錄”的絕對路徑添加進來,我的是“C:\Users\Administrator\Documents\visual studio 2010\Projects\test1\include”,【確定】保存即可。

②、點擊【庫目錄】右邊的下拉按鈕,然後單擊【<編輯>】,將工程項目的“lib目錄”的絕對路徑添加進來,我的是“C:\Users\Administrator\Documents\visual studio 2010\Projects\test1\lib”,【確定】保存即可。

2、設置“附加依賴項”

在“解決方案資源管理器”中右鍵該項目,依次選擇【屬性】——【配置屬性】——【鏈接器】——【輸入】,


點擊【附加依賴項】右邊下拉列表,然後【<編輯>】,將“libmysql.lib”寫進去,然後點擊【確定】即可。如下圖所示:



通過上面引用文件的配置,可使編譯器找到mysql.h頭文件,並可在程序中使用C語言的MySQL API來操作數據庫


步驟四:添加頭文件:

在你要連接數據庫的.cpp源文件里加入#include "winsock2.h"和#include "mysql.h"兩個文件。

注意:這兩個頭文件的順序不能顛倒,否則會報錯!(本人入了很長時間的坑!/(ㄒoㄒ)/~~)

若有疑問,請參看:http://blog.csdn.net/freefalcon/article/details/1374733



數據庫查詢操作案例:



#include <iostream>  
#include <stdio.h>  
#include <stdlib.h>  
#include <string.h>  
  
//下面兩個頭文件的順序不能顛倒  
#include "winsock2.h"  
#include "windows.h"  
#include "mysql.h"   
  
using namespace std;  
   
int main()  
{  
    const char host[] = "localhost";    //MySQL服務器IP地址;若是本地可填寫“localhost”或127.0.0.1  
    const char user[] = "root";         //MySQL的用戶名  
    const char pswd[] = "root";         //密碼  
    const char table[] = "test";        //數據庫名稱  
    unsigned int port = 3306;           //MySQL服務端口號,默認是3306          
    MYSQL myCont;//創建MYSQL對象,定義數據庫連接句柄  
    MYSQL_RES *result;//查詢結果集,存放查詢結果  
    MYSQL_ROW sql_row;//存放一行查詢結果的字符串數組  
    MYSQL_FIELD *fd;/包含字段信息的結構  
    char column[32][32];  
    int res;  
    mysql_library_init(0,NULL,NULL);//初始化MySQL庫  
    mysql_init(&myCont);//初始化連接處理程序  
    if(mysql_real_connect(&myCont,host,user,pswd,table,port,NULL,0))  
    {//通過調用mysql_real_connect()連接到服務器  
        cout<<"connect succeed!"<<endl;  
        mysql_query(&myCont, "SET NAMES GBK"); //設置編碼格式,否則在cmd下無法顯示中文  
        res=mysql_query(&myCont,"select * from samples");//執行查詢語句,mysql_query如果查詢成功,零;如果出現一個錯誤,非零。  
        if(!res)  
        {  
            result=mysql_store_result(&myCont);//保存查詢到的數據到result  
            if(result)  
            {  
                int i,j;  
                cout<<"number of result: "<<(unsigned long)mysql_num_rows(result)<<endl;  
                for(i=0;fd=mysql_fetch_field(result);i++)//獲取列名  
                {  
                    strcpy(column[i],fd->name);  
                }  
                j=mysql_num_fields(result);  
                for(i=0;i<j;i++)  
                {  
                    printf("%s\t",column[i]);  
                }  
                printf("\n");  
                while(sql_row=mysql_fetch_row(result))//獲取具體的數據  
                {  
                    for(i=0;i<j;i++)  
                    {  
                        printf("%s\n",sql_row[i]);  
                    }  
                    printf("\n");  
                }  
            }  
        }  
        else  
        {  
            cout<<"query sql failed!"<<endl;  
        }  
    }  
    else  
    {  
        cout<<"connect failed!"<<endl;  
    }  
    //注意用完數據庫要及時回收資源  
    if(result!=NULL) mysql_free_result(result);//釋放結果資源  
    mysql_close(&myCont);//關閉MySQL連接  
    mysql_library_end();//關閉MySQL庫  
    return 0;  
}  








發佈了72 篇原創文章 · 獲贊 269 · 訪問量 76萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章