c++串連mysql資料庫(使用mysql api方式,環境VS2013+MYSQL5.6)

來源:互聯網
上載者:User

標籤:

轉載請註明出處,原文地址http://www.cnblogs.com/zenki-kong/p/4382657.html

 

剛開始寫部落格,博主還只是個大三汪,學藝不精,如有錯誤還請前輩指出(>^ω^<),廢話不多說啦,進入本文

下一篇部落格應該會講使用mysql connector c++來讓c++串連mysql,本篇是直接使用mysql api

 

首先交代一下開發環境,64位mysql5.6.23+VS2013+WIN7旗艦版

一開始用mysql5.7.6提示缺少binary_log_types.h,搜了整個檔案夾都沒這個檔案,於是就用5.6吧

 

 

1.要使用mysql的api,需要mysql目錄下include和lib兩個檔案夾的東西,如果你用的是wamp或者phpstudy,裡面的mysql可能沒這兩個檔案夾,那麼去下個解壓版的mysql就可以了,我用的是64位的mysql5.6.23安裝版

 

2.這點很重要,先提前把這個說了

博主一開始就卡在這裡,就說怎麼編譯不通過呢(ㄒoㄒ)//,各種無法解析外部符號,研究了半天,發現原因在於資料庫是64位版的,而程式平台是32位的(畢竟我開發經驗沒多少……(>﹏<))。所以我們要先設定一下平台,如果你是32位的資料庫,大概可以跳過這步。

有上角 活動解決方案平台 點建立

 

3.在vs2013中開啟項目-屬性,把include和lib兩個檔案夾包含進來,具體路徑看個人吧,如果你是安裝版,就在mysql server根目錄下(我是直接安裝在mysql根目錄)。如果你是包含了之後再改64位/32位平台,可能要重新包含一次,所以我提前說了平台問題。

先來看看這兩個檔案夾有啥

然後包含進來

4.把lib檔案夾裡的 libmysql.dll 複製到你的項目目錄中(就是放h和cpp的那裡)

 

5.外面的事情解決完了,最後就是代碼了

首先是要包含的標頭檔和庫,聽說標頭檔順序交換會有問題,你們可以試試,因為我項目本身很早就包含了winsock2.h,就不試拉,我也很懶的(^。^)y-~~

#include <WinSock2.h>#include "mysql.h"#pragma comment(lib,"wsock32.lib")#pragma comment(lib,"libmysql.lib")

然後就是測試用的主要代碼,當然測試之前你需要建立一個表,類和函數使用之類就自行度娘查吧。。。其實也很顯然易懂

定義三個變數

MYSQL mysql;MYSQL_RES *result;MYSQL_ROW row;

然後是資料庫操作的代碼

mysql_init(&mysql);mysql_real_connect(&mysql, "localhost", "root", "root", "dnd", 3306, NULL, 0);char *sql = "select * from user";//unicode下用Cstring會很麻煩,直接用charmysql_query(&mysql, sql);result = mysql_store_result(&mysql);while ((row = mysql_fetch_row(result))!=NULL){    ShowText(row[1]);//這裡是個顯示的函數,控制台可以用cout}

上面的代碼,沒有過多的錯誤偵測,因為幾行代碼而已,有問題的話注釋測測吧,可以使用

unicode下用Cstring會很麻煩,直接轉換類型是不行的(只會保留第一個字元),於是查詢語句就出錯咯

 

順便問一個問題,這句會造成記憶體流失嗎(我當然是知道答案的哈,就當是考一下初學者,大神就無視吧哈)

char *sql = "select * from user";

sql="I am Zenki Kong"//那加多這一句呢?會不會造成記憶體流失?

 

至此,如無意外就成功了!!!

但是個人感覺使用connector串連用起來更加方便,所以寫完這個部落格後我已經開始著手了,如果成功我也會寫部落格,有興趣的同學可以留意一下。

 

目前瞭解到C++串連mysql的方法有三種,ado、直接使用mysql api還有就是connector c++

順便問一下路過的大神,不同的串連方式對資料庫的效率有影響嗎?請問哪一種效率最高?

c++串連mysql資料庫(使用mysql api方式,環境VS2013+MYSQL5.6)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.