使用MySQLpp訪問MySQL

2021-06-11 02:40:18 字數 2141 閱讀 3388

昨天忘了在看什麼的時候發現了在/usr/include/中有個mysql++的資料夾,google之發現原來這個是mysqlpp,乙個c++的用來訪問mysql的第三方的庫。google到的提供支援的是這個**上面有詳細的文件。貌似這個也是有官方支援的,在mysql的官網的emaillist中發現好多關於這個庫的。

之前也有弄過官網的mysql connector for c++,但是弄了好久沒有弄好,到處搜解決方案,不過網上關於mysql c api的很多,關於這個c++ connector的很少。後來發現據說是官網上的這麼一句話的原因:

但是最後也沒有弄好。現在用這個mysqlpp,首先看名字就覺得很優雅,使用起來也確實很好用。文件齊全,平台支援好(我只在ubuntu下使用過,其他平台沒有使用過),關鍵是使用起來真的很方便。這個庫是在c api上的一層包裝,因此必須有c api,也就是裝了mysql server之後在/usr/include/mysql下的一堆檔案(以及相應的.lib.so.a檔案)。

這裡將我剛開始接觸的一些問題寫一下,其實也沒碰到多少問題,很容易上手。在文件中copy了乙個例子:build and run,出現了下面的錯誤:

/usr/include/mysql++/common.h|131|致命錯誤: mysql_version.h:沒有那個檔案或目錄|

點了錯誤後,code blocks跳到了原始檔common.h,定位到下面的第4行。我又找了找,在/usr/include/mysql++下沒有發現mysql_version.h檔案,於是我猜就是要使用mysql/mysql_version.h了,於是就ctrl+f mysqlpp_mysql_headers_buried,找了半天沒找到。於是google,發現要在自己寫的檔案中#define,於是解決問題。後來看文件中貌似也是這麼個意思。

#if defined(mysqlpp_mysql_headers_buried)

# include #else

# include #endif

第二個問題就是各種類似於下面的:

/testcb/mysql++_test/test_main.cpp|9|undefined reference to `mysqlpp::connection::connection(bool)'|
這個顯然是庫linker沒有找到庫麼,於是add linker library /usr/lib/libmysqlpp.so之後解決問題。然後就順利的執行了。

我一直覺得python的**比較簡潔,並且庫也比較實用(其實是廢話),於是我經常拿這些庫和python的比較。下面我比較一下mysqlpp與python中的mysqldb。

import mysqldb

conn=mysqldb.connect(host='localhost',user='root',passwd='***x',charset='utf8')

cursor=conn.cursor()

conn.select_db('test')

count=cursor.execute('select text from test_schema limit 2')

results=cursor.fetchmany(count)#unicode

print results[0][0]

conn.close()

這麼一段**就完成了資料庫的訪問,下面這一段是使用mysqlpp的訪問

#define mysqlpp_mysql_headers_buried

#include #include #include int main(int argc, char *argv)

{ mysqlpp::connection conn(true);

conn.set_option(new mysqlpp::setcharsetnameoption("utf8"));

conn.connect("test", "localhost", "root", "***x", 3306);

mysqlpp::query query=conn.query("select text from test_schema limit 2");

mysqlpp::storequeryresult res = query.store();

std::cout<

linux通過c語言程式設計訪問遠端mysql

cpp view plain copy include include include mysql mysql.h intmain void else char sql select host,user from user order by rand if mysql query mysql,sql...

python使用peewee實現mysql資料操作

peewee可用class來建立表,增刪改查,應該是相對餘單錶 本人幾乎沒用過,自以為如此 想實現sql查詢,得到list,比如這樣的結果 但是查詢結果是全是資料 元組 且找不到列名,後dir後逐個嘗試發現列名可以使用result.description j 0 獲取 元組使用起來不方便,現實現將資...

Zeppelin使用JDBC連線MySQL

在interpreter列表頁create new interpreter。輸入名稱 mysql interpreter group 選擇jdbc properties 修改 name value default.driver com.mysql.jdbc.driver default.url jd...