Linux下使用C C 訪問資料庫

2021-06-13 15:52:55 字數 2725 閱讀 4643

[日期:2011-04-27]

[字型:大 中 小]

寫一套oa系統,為了方便進行資料庫操作,特意抽出一周的時間來研究c/c++訪問各種資料庫的方法,並打算封裝一套資料庫操作類,現在奉上最簡單的一部分:在linux下訪問mysql資料庫。

本文中使用的mysql api**為c語言,如果各位對c++有興趣,可以考慮使用mysql++。

一、配置開發環境

首先需要編譯、安裝mysql,安裝完成後,將mysql目錄中的lib目錄新增到環境變數中。

新建c/c++工程,把$mysql_root/include新增到編譯環境的包含路徑下面。在編譯選項中,增加$mysql_root/lib目錄。在link選項中增加-lmysqlclient(已經把lib目錄增加到系統環境變數中),或者直接引用libmysqlclient.so檔案。

二、程式**

不多說了,直接上**,注釋都很詳細。

/*   

* mysqlmanager.h   

*   

*    created on: feb 18, 2009   

*            author: steven wee   

*/   

#ifndef mysqlmanager_h_   

#define mysqlmanager_h_   

#include "../common/checkstringtools.h"   

#include

#include

#include

#include

#include

using namespace std;   

class mysqlmanager   

;   

#endif /* mysqlmanager_h_ */

/*   

* mysqlmanager.cpp   

*   

*    created on: feb 18, 2009   

*            author: steven wee   

*/   

#include "mysqlmanager.h"   

mysqlmanager::mysqlmanager(string hosts, string username, string password, string dbname, unsigned int port)   

mysqlmanager::~mysqlmanager()   

void mysqlmanager::setdbname(string dbname)   

else   

}   

void mysqlmanager::sethosts(string hosts)   

else   

}   

void mysqlmanager::setpassword(string password)   

else   

}   

void mysqlmanager::setport(unsigned int port)   

else   

}   

void mysqlmanager::setusername(string username)   

else   

}   

void mysqlmanager::initconnection()   

if ( sql.empty() )   

mysql_res *res;   

mysql_row row;   

unsigned int i,j = 0;   

stringtools stringtools;   

sql = stringtools.filterstring(sql);   

i = mysql_real_query(&mysqlclient,sql.c_str(),(unsigned int)strlen(sql.c_str()));//    執行查詢   

if ( i )   

res = mysql_store_result(&mysqlclient);   

vectorobjectvalue;   

while( (row = mysql_fetch_row(res)) )   

this ->resultlist.push_back(objectvalue);   

}   

mysql_free_result(res);         //free result after you get the result   

return true;   

}   

vector< vector> mysqlmanager::getresult()   

void mysqlmanager::destroyconnection()   

bool mysqlmanager::getconnectionstatus()   

三、修改建議

本人在以後的完善中,打算把runsqlcommand(char * sql)函式分解成兩個或者三個函式,分別執行select和insert等語句。

在程式中,我並沒有強制要求引數必須為const,可能會出現一些安全問題。

本文僅起拋磚引玉的作用,希望有高手可以指點我程式中的問題。

Linux下使用C C 訪問資料庫

linux下使用c c 訪問資料庫 mysql篇 最近打算寫一套oa系統,為了方便進行資料庫操作,特意抽出一周的時間來研究c c 訪問各種資料庫的方法,並打算封裝一套資料庫操作類,現在奉上最簡單的一部分 在linux下訪問mysql資料庫。本文中使用的mysql api 為c語言,如果各位對c 有興...

linux下C 訪問mysql資料庫

在這個程式中,比上一次的要完善一些,實現了通過c 對資料表進行新增,修改,插入,刪除的功能。標頭檔案 mydb.h ifndef mydb class define mydb class include include include class mydb endifmydb.cpp include...

Linux系統下C C 開發mysql資料庫應用

一 linux下掛載光碟機 掛載光碟機 mount t iso9660 dev cdrom mnt cdrom 解除安裝光碟機 umount dev cdrom 彈出光碟機 eject 推進光碟機 eject t 二 執行mysql只需安裝 mysql server 3.23.54a 11.i386...