Ubuntu 16.04 Linux系統下使用C++連接mysql數據庫

  1. Ubuntu安裝mysql
sudo apt-get install mysql-server,mysql-client,libmysqlclient-dev
安裝的時候會提示你設置數據庫的密碼
安裝結束後驗證是否成功:sudo netstat -tap | grep mysql
如果有關於mysql的字出現,就安裝成功了。
  1. c++連接數據庫
    專用的mysql.h頭文件
    #include <mysql.h>
    linux下編譯的時候記得使用如下命令,注意是反引號不是引號
g++ test.cpp `mysql_config --cflags --libs` -o test

C++關於數據庫的API函數:

mysql_init //初始化MYSQL結構
mysql_real_connect//連接數據庫
mysql_real_query//查詢
mysql_store_result//操作查詢結果
mysql_fetch_row//逐行獲取上面的結果
mysql_free_result//釋放結果集
mysql_close//關閉mysql使用

具體函數使用比較簡單,就不詳述了。

出現的問題:

1.找不到mysql.h

原因:只安裝了mysql-server 和mysql-client 但要在linux下進行數據庫開發,還需要安裝devel開發包

解決辦法:sudo apt-get install libmysqlclient15-dev 安裝此軟件包

安裝完後 mysql.h出現在/usr/include/mysql目錄下

此時編譯g++ –I/usr/include/mysql –L/usr/lib/mysql –lmysqlclient –o xx xx.cpp

注:庫自帶的配置命令 `mysql_config --cflags --libs` 執行如下

xiang@xiang-mac:~$ mysql_config --cflags --libs
-I/usr/include/mysql 
-L/usr/lib/x86_64-linux-gnu -lmysqlclient -lpthread -lz -lm -lrt -ldl

-I(大i)表示頭文件優先搜索路徑
-L表示鏈接的庫文件優先搜索路徑
-l(小L)表示鏈接的庫文件名
如:
-I/home/hello/include表示將/home/hello/include目錄作爲第一個尋找頭文件的目錄
	尋找的順序是:/home/hello/include-->/usr/include-->/usr/local/include
	
-L/home/hello/lib表示將/home/hello/lib目錄作爲第一個尋找庫文件的目錄
	尋找的順序是:/home/hello/lib-->/lib-->/usr/lib-->/usr/local/lib
	
-lworld表示在上面的lib的路徑中尋找libworld.so動態庫文件(如果gcc編譯選項中加入了“-static”表示尋找libworld.a靜態庫文件)

-l(小L)參數緊接着就是庫名,那麼庫名跟真正的庫文件名有什麼關係呢?
就拿數學庫來說,他的庫名是m,他的庫文件名是libm.so,很容易看出,把庫文件名的
頭lib和尾.so去掉就是庫名了。

好了現在我們知道怎麼得到庫名了,比如我們自已要用到一個第三方提供的庫名字叫libtest.so,那麼我們只要把libtest.so拷貝到/usr/lib裏,編譯時加上-ltest參數,我們就能用上libtest.so庫了(當然要用libtest.so庫裏的函數,我們還需要與libtest.so配套的頭文件)。
關於後面的小知識點參考了該博主的內容:gcc -I -L -l描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章