C++ を使用して MySQL に接続する方法

C++ を使用して MySQL に接続する方法

C++でMySQLに接続する際の参考情報です。具体的な内容は以下のとおりです。

MySQLCon クラスの定義

クラス MySQLCon
{
 MYSQLmysql;
公共:
 int エラー番号;
 文字列エラーテキスト;
公共:
 //MySQLCon() を初期化します。
 //データベースを閉じます~MySQLCon();
 //データベースに接続します bool OpenConn(const char* host,const char* username,const char* pwd,const char* dbName,unsigned port=0);
 void GetErrorText();//エラー テキストを取得します void Close();//データベースを閉じます bool ExecuteSQL(const char* sql);//SQL ステートメントを使用しますが、データを受信できません bool QureySQL(const char* sql, vector<vector<string>>& resultSet);//SQL ステートメントを使用してデータを受信します (select ステートメント)
};

初期化操作

MySQLCon::MySQLCon()
{
 (mysql_library_init(0, nullptr, nullptr) の場合) 
 {
 cout << "CAPI の初期化に失敗しました" << std::endl;
 getchar();
 終了(1);
 }
 (mysql_init(&mysql)==nullptr)の場合
 {
 cout << "データベース変数の初期化に失敗しました" << std::endl;
 char を取得する
 終了(1);
 }
 if (mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, "gbk"))
 {
 cout << "接続オプションの設定に失敗しました" << std::endl;
 char を取得する
 終了(1);
 }
}

MySQLサーバーへの接続

//パラメータは、ホスト、ユーザー名、パスワード、データベース名、ポート番号です。bool MySQLCon::OpenConn(const char* host, const char* username, const char* pwd, const char* dbName, unsigned port)
{
 //データベースに接続する if (mysql_real_connect(&mysql, host, username, pwd, dbName, port, nullptr, 0)==nullptr)
 {
 cout << "MySQL サーバーへの接続に失敗しました" << std::endl;
 //エラーテキストを取得します。GetErrorText();
 終了(1);
 false を返します。
 }
 true を返します。
 
}

MySQLエラー情報を取得する

void MySQLCon::GetErrorText()
{
 //エラーコードを取得します errornum = mysql_errno(&mysql);
 //エラーテキストを取得します。errortext = mysql_error(&mysql);
 //エラー コードを出力します cout << "error num: " << errornum << std::endl;
 //エラーテキストを出力 cout << "error text: " << errortext << std::endl;
 getchar();
}

C++ での SQL ステートメントの使用

ブールMySQLCon::ExecuteSQL(const char* sql)
{
 //SQL ステートメントを使用しますが、データを受け取ることができません if (mysql_real_query(&mysql, sql, strlen(sql)))
 {
 エラーテキストを取得します。
 false を返します。
 }
 true を返します。
}
bool MySQLCon::QureySQL(const char* sql、ベクトル<ベクトル<文字列>>&結果セット)
{
 //SQL ステートメントを使用して、データをベクター コンテナーに受信します if (mysql_real_query(&mysql, sql, strlen(sql)))
 {
 エラーテキストを取得します。
 false を返します。
 }
 //MYSQL 結果セットを作成します MYSQL_RES* result = mysql_store_result(&mysql);
 //行と列の合計数を取得します unsigned int rows = mysql_num_rows(result);
 符号なし整数列 = mysql_num_fields(結果);
 // 結果セット MYSQL_ROW 行にデータの一部を記録するために使用されます。
 while (行 = mysql_fetch_row(結果))
 {
 // 行にデータを格納するためのベクター コンテナーを作成します。vector<string> lineDate;
 (int i = 0; i < cols; i++) の場合
 {
 if (行[i])
 {
 //行の各列のデータをlineDateに保存します。lineDate.push_back(row[i]);
 }
 それ以外
 {
 lineDate.push_back("");
 }
 }
 // データの行全体を resultSet に保存します resultSet.push_back(lineDate);
 }
 //結果セットを解放するmysql_free_result(result);
 true を返します。
}

データベースを閉じる

void MySQLCon::Close()
{
 mysql_close(&mysql);
}
MySQLCon::~MySQLCon()
{
 近い();
 mysql_library_end();
}

メイン関数の例

int メイン()
{
 MySQLCon c_apiconn;
 c_apiconn.OpenConn("127.0.0.1", "ルート", "136119", "ファンシー");
 文字列 sql = "use fancy;"
 ベクトル<ベクトル<文字列>> データ;
 c_apiconn.SQL を実行します (sql.c_str());
 sql = "fancy.infoから*を選択します;";
 c_apiconn.QureySQL(sql.c_str(), データ);
 (int i = 0; i < data.size(); i++) の場合
 {
 (int j = 0; j < data[i].size(); j++)の場合
 {
 cout << データ[i][j] << "\t";
 }
 cout << 終了;
 }
 0を返します。
}

出力

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • C++ で MySQL データベースに接続する 2 つの方法の概要
  • Eclipse の C++ で MySQL データベースに接続する
  • C++ が MySQL-Connector/C++ を使用して MySQL に接続するときに発生する LNK2019 エラーの解決方法
  • MySql データベースに接続するための C/C++ メソッド
  • C++ で MySQL に接続する方法 (C-API を直接呼び出す)
  • MySQL API を使用して C++ でデータベースに接続および操作する例の詳細な説明
  • C++ を MySQL 5.6 に接続する際のエラーの概要
  • C++ を MySQL に接続する際に発生する問題の概要
  • C++はデータベースに接続するためにmysql独自のヘッダーファイルを使用します
  • C++ で MySQL データベースに接続する 2 つの方法 (ADO 接続と MySQL API 接続)

<<:  CentOS 7 で Docker のポート転送をファイアウォールと互換性のあるように設定する方法

>>:  22 Vue 最適化のヒント (プロジェクトの実践)

推薦する

Nginxリバースプロキシ設定でプレフィックスが削除される

nginx をリバース プロキシとして使用する場合、リクエストをそのまま次のサービスに転送するだけで...

html+cssレイアウトの3つの方法(ナチュラルレイアウト/フローレイアウト/ポジショニングレイアウト)

1. 自然なレイアウト<br />レイアウトは変更せずに自動的に左揃えになります。 2....

Linux での fuser コマンドの使用法の詳細な説明

説明する: fuser は、現在ディスク上のファイル、マウント ポイント、さらにはネットワーク ポー...

Windows で削除された MySQL 8.0.17 のルート アカウントとパスワードを回復する方法

少し前にSQLの独学を終え、MySQL 8.0.17をダウンロードしました。インストールして設定した...

クールなページング効果を実現するネイティブJS

この記事では、次のような効果を持つ JS ページング効果の例を紹介します。クールだと思いませんか? ...

非表示のフォームテキストを表示するJavaScript

この記事では、フォームの隠しテキストを表示するためのJavaScriptの具体的なコードを参考までに...

Centos7 システムでの .NET Core 2.0 + Nginx + Supervisor 環境の構築

1. Linux .NET Core の紹介Microsoft は常に自社のプラットフォームに対して...

MySQLの保存場所を新しいディスクに移行する方法

1. 新しいディスクを準備し、現在のルートパーティションと同じファイルシステムでフォーマットし、ディ...

MySQL マスタースレーブレプリケーションの実践の詳細説明 - GTID ベースのレプリケーション

GTIDベースのレプリケーション導入GTID ベースのレプリケーションは、MySQL 5.6 以降に...

デザイン理論:人間中心のデザインコンセプト

<br />思想が東西に分かれていた時代、東洋の叡智を代表するものの一つとして「禅」は多...

Linux に mysql をインストールするときに /etc に my.cnf ファイルがない問題を解決する

今日、mysql ポートを変更したいと思ったのですが、/etc/ ディレクトリに my.cnf ファ...

Tomcatの起動が遅い問題を素早く解決、超簡単

今日、私はクラスメートが問題を解決するのを手伝いました - Tomcat の起動が非常に遅く、約 5...

Linux コマンドを使用してオーディオ形式を変換および結合する方法

FFmpeg flacをインストールする eric@ray:~$ sudo apt install ...

JavaScript の絶妙なスネーク実装プロセス

目次1. HTML構造を作成する2. テーブルを作成する3. ヘビの頭と体を作る4. 食べ物を作る5...

スローモーションアニメーション効果を実現するJavaScript

この記事では、スローモーションアニメーション効果を実現するためのJavaScriptの具体的なコード...