極めて簡単な操作mysqlのc++コード

4988 ワード

私は以前から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)) << "
"; // 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 << "
"; MYSQL_ROW row; while ((row = mysql_fetch_row(result))){ for (size_t i = 0; i != column.size(); ++i){ std::cout << row[i] << "\t"; } cout << "
"; } } 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)) << "
"; MYSQL_FIELD* field; while ((field = mysql_fetch_field (result))){ cout << field->name << "\t"; } cout << "
"; 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 << "
"; } } mysql_free_result(result); } mysql_close(&connection); return 0; }