歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Ubuntu下用C連接MySQL數據庫

Ubuntu下用C連接MySQL數據庫

日期:2017/2/28 15:50:29   编辑:Linux教程

為了用C連接數據庫,上網查了這麼多東西都沒連接成功,糾結。到最後發現其實也就是簡單兩步就解決的問題。

先放出示例代碼,這個網上隨便找一個就是了,旨在測試現行的MYSQL數據庫能不能於C連接上。

#include
#include
#include
#include “mysql/mysql.h” //mysql.h目錄
using namespace std;
string host=”localhost”;
string user=”root”;
string pwd=“”; //這裡加上你數據庫的密碼
string dbname=”test”; //數據庫名稱
string sql=”"; //數據庫語句
unsigned int port=3309; //端口
int status;
int main(){
MYSQL *mysql;
mysql=mysql_init(0);
MYSQL_RES *result;
MYSQL_ROW row;
if(mysql_real_connect(mysql,host.c_str(),user.c_str(),pwd.c_str(),dbname.c_str(),port,NULL,CLIENT_FOUND_ROWS)==NULL){
cout << "connect failure!" << endl;
return EXIT_FAILURE;
}else{
cout << "connect success!" << endl;
}
mysql_set_character_set(mysql,"gbk");
status=mysql_query(mysql,sql.c_str());
if(status !=0 ){
cout << "query failure!" << endl;
}
cout << "the status is :" << status << endl;
result=mysql_store_result(mysql);
while(row=mysql_fetch_row(result)){
cout << row[1] <<"|"<< row[2] << endl;

}
mysql_free_result(result);
mysql_close(mysql);

}

1.
一開始編譯都不用編譯,我找遍了整個硬盤找不到mysql.h,網上什麼亂七八糟的方法,對我來說都是白扯,我就是少裝了libmysqlclient15-dev這個軟件包,執行

sudo apt-get install libmysqlclient15-dev,第一步解決,mysql.h文件在usr/include/mysql目錄下。

2.
好了,現在開始編譯,8個錯誤,mysql_開頭的所有函數都沒有定義,undefined reference to `mysql_init()......等等等,這個可是折騰死我我了,關於mysql的什麼開發庫我都已經裝了,mysqlclient也已經裝了,為什麼會找不到這些函數呢?我甚至上國外的亂等折騰了很久,啥都沒整出來,其實用gcc -o output-file $(mysql_config –cflags) main.cpp $(mysql_config –libs)來編譯源文件的想法是對的,但是我就是找不到庫的目錄,糾結...又是將近全盤搜索,總算找到libmysqlclient.so文件,接下來要做的就是讓codeblocks知道這個文件的目錄就是了,打開settings -> compiler and debugger,點linker settings,添加libmysqlclient.so文件的目錄,如圖

好了,就這麼兩步,運行一下,connect success!

就這兩步。

更多Ubuntu相關信息見Ubuntu 專題頁面 http://www.linuxidc.com/topicnews.aspx?tid=2

Copyright © Linux教程網 All Rights Reserved