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 最適化のヒント (プロジェクトの実践)

推薦する

Tencent Cloud Serverをゼロから導入する方法

初めての投稿ですので、間違いや問題点などありましたら、コメント欄で指摘していただければ、今後改善させ...

HTML 5.1 学習: 14 の新機能とアプリケーション例

序文ご存知のとおり、HTML5 はインターネット コミュニティ全体に標準を提供する組織である Wor...

JS のあらゆる場所で絶対等価演算子の使用をやめる

目次概要1. NULL値のテスト2. ユーザー入力を読み取る導入事実の根源はどこにあるのでしょうか?...

Vue3ライフサイクル関数とメソッドの詳細な説明

1. 概要いわゆるライフサイクル機能とは、特定の条件下で自動的にトリガーされる機能です。 2. VU...

フロントエンドJavaScriptの動作原理

目次1. JavaScript エンジンとは何ですか? 2. V8エンジン3. ランタイム環境4. ...

MySQL のタイムスタンプと日付時刻のタイムゾーンの問題によって生じる DTS の落とし穴の詳細な説明

目次MySQL で現在の時刻を表現するにはどうすればよいでしょうか?結論は確認するピットMySQL ...

Alibaba Cloud に MySQL データベースをインストールするときに発生する 2002 エラーを解決する方法

データベースのインストール中に次のエラーが発生しました: 解決策は次のとおりです。 1. binディ...

Docker Hubの動作原理と実装プロセスの分析

GitHub が提供するコード ホスティング サービスと同様に、Docker Hub はイメージ ホ...

MySQL で誤って削除したテーブル データを回復する方法 (必読)

バックアップがあれば、非常に簡単です。最新のバックアップ データを生成し、mysqlbinlog を...

統計量に対するmySql SQLクエリ操作

余計なことは言わないで、コードだけ見てみましょう〜 プロジェクト番号を選択、 sum(case wh...

Dockerボリューム権限管理の詳細な説明

ボリュームデータボリュームは Docker の重要な概念です。データ ボリュームは、1 つ以上のコン...

Ubuntuにopencvをインストールする正しい方法の詳細な説明

この記事ではUbuntuでC++インターフェースを使用してopencvをインストールする方法について...

Linux でのマルチスレッドおよびマルチプロセス クラッシュのシミュレーションに関する簡単な説明

結論:マルチスレッド環境では、スレッドの 1 つがクラッシュすると、他のスレッド (プロセス全体) ...

Vueは時間カウントダウン機能を実装する

この記事では、Vueの具体的なコード例を参考までに紹介します。具体的な内容は以下のとおりです。必要:...

正の整数かどうかを判断するMYSQLカスタム関数の例コード

関数を記述できます。主に正規表現を使用して判断を行います。入力文字が空の場合は、「-」を使用して置き...