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 を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: CentOS 7 で Docker のポート転送をファイアウォールと互換性のあるように設定する方法
>>: 22 Vue 最適化のヒント (プロジェクトの実践)
初めての投稿ですので、間違いや問題点などありましたら、コメント欄で指摘していただければ、今後改善させ...
序文ご存知のとおり、HTML5 はインターネット コミュニティ全体に標準を提供する組織である Wor...
目次概要1. NULL値のテスト2. ユーザー入力を読み取る導入事実の根源はどこにあるのでしょうか?...
1. 概要いわゆるライフサイクル機能とは、特定の条件下で自動的にトリガーされる機能です。 2. VU...
目次1. JavaScript エンジンとは何ですか? 2. V8エンジン3. ランタイム環境4. ...
目次MySQL で現在の時刻を表現するにはどうすればよいでしょうか?結論は確認するピットMySQL ...
データベースのインストール中に次のエラーが発生しました: 解決策は次のとおりです。 1. binディ...
GitHub が提供するコード ホスティング サービスと同様に、Docker Hub はイメージ ホ...
バックアップがあれば、非常に簡単です。最新のバックアップ データを生成し、mysqlbinlog を...
余計なことは言わないで、コードだけ見てみましょう〜 プロジェクト番号を選択、 sum(case wh...
ボリュームデータボリュームは Docker の重要な概念です。データ ボリュームは、1 つ以上のコン...
この記事ではUbuntuでC++インターフェースを使用してopencvをインストールする方法について...
結論:マルチスレッド環境では、スレッドの 1 つがクラッシュすると、他のスレッド (プロセス全体) ...
この記事では、Vueの具体的なコード例を参考までに紹介します。具体的な内容は以下のとおりです。必要:...
関数を記述できます。主に正規表現を使用して判断を行います。入力文字が空の場合は、「-」を使用して置き...