一段極簡單的操作 mysql 的 c++ 代碼

來源:互聯網
上載者:User

標籤:

我之前還是一直想用 connector 來串連的,但是因為 mysql 官方提供的檔案和本地的編譯系統並不一樣,所以需要把 connector 加上 

-stdlib=libc++ 重新編譯一遍。Hah 我不。

還能怎樣呢?用 ODBC 吧!嘗試用 mac 的 ODBC administrator,但是這個太老了,而且不方便(我覺得不方便)所以也沒採用。

於是最後選擇使用 mysql 的 C API 來串連資料庫,而以下就是一個極為簡單的例子:

 

#include <iostream>#include <vector>#include <string>#include <mysql.h>using namespace std;int main(){    ios::sync_with_stdio (false);    MYSQL connection;    mysql_init (&connection);    mysql_real_connect (&connection,"localhost", "root", "1234",                                    "world", 3306, nullptr, 0);    // mysql_query 是一個值-結果函數    int query_success = mysql_query (&connection, "SELECT * FROM city LIMIT 10");    if (query_success == 0){        // 儲存查詢結果到 result        MYSQL_RES* result = mysql_store_result (&connection);        if (result){            std::cout << "Number of result: "                      << static_cast<size_t>(mysql_num_rows(result)) << "\n";            // 擷取列名            MYSQL_FIELD* field;            vector<string> column;            while ((field = mysql_fetch_field (result))){                column.emplace_back(field->name);            }            // 或者使用 mysql_num_fields(result); 得到結果的行數            for (const auto& col : column){                cout << col << "\t";            }            cout << "\n";            MYSQL_ROW row;            while ((row = mysql_fetch_row(result))){                for (size_t i = 0; i != column.size(); ++i){                    std::cout << row[i] << "\t";                }                cout << "\n";            }        }        mysql_free_result(result);    }    mysql_close(&connection);    return 0;}

 再做一些小改動:

#include <iostream>#include <vector>#include <string>#include <mysql.h>using namespace std;int main(){    ios::sync_with_stdio (false);    MYSQL connection;    mysql_init (&connection);    mysql_real_connect (&connection,"localhost", "root", "1234",                                    "world", 3306, nullptr, 0);    // mysql_query 是一個值-結果函數    int query_success = mysql_query (&connection, "SELECT * FROM city");    if (query_success == 0){        // 儲存查詢結果到 result        MYSQL_RES* result = mysql_store_result (&connection);        if (result){            cout << "Number of result: "                      << static_cast<size_t>(mysql_num_rows(result)) << "\n";            MYSQL_FIELD* field;            while ((field = mysql_fetch_field (result))){                cout << field->name << "\t";            }            cout << "\n";            MYSQL_ROW row;            auto const field_num = mysql_num_fields(result);            while ((row = mysql_fetch_row(result))){                for (size_t i = 0; i != field_num; ++i){                    std::cout << row[i] << "\t";                }                cout << "\n";            }        }        mysql_free_result(result);    }    mysql_close(&connection);    return 0;}

 

一段極簡單的操作 mysql 的 c++ 代碼

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.