程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> c++連接mysql數據庫(使用mysql api方式,環境VS2013+MYSQL5.6),vs2013mysql5.6

c++連接mysql數據庫(使用mysql api方式,環境VS2013+MYSQL5.6),vs2013mysql5.6

編輯:MySQL綜合教程

c++連接mysql數據庫(使用mysql api方式,環境VS2013+MYSQL5.6),vs2013mysql5.6


轉載請注明出處,原文地址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會很麻煩,直接用char
mysql_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++

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved