C++ で mysql データベースに接続してデータを読み取る方法
1. mysql API のヘッダー ファイルをインクルードする必要があります
ローカルの mysql データベースに接続する必要がある場合は、mysql がデータベースはローカルにインストールされている必要があります。ここでは、データベースへの接続、クエリ ステートメントの実行、その他の操作など、一部の mysql API が使用されています。これらのインターフェイスは、次のヘッダー ファイルに含まれています:
#include <mysql/mysql.h>
2. mysql に接続するための具体的な手順
ここでは、大きく 4 つの主要なステップに分けることができます:
1. mysql データベースに接続します
1. mysql データベースに接続します
明らかに、 mysql データ内のデータを取得するには、まずデータベースに接続し、データベースを操作できるハンドルを取得する必要があります。
2. クエリ ステートメントを実行します。つまり、必要なデータを選択します。
は、クエリ ステートメントを実行し、必要なデータをクエリします。クエリされたデータは結果セットと呼ばれる場所に保存されます。
3. 結果セットから必要なデータを取得する
関連するインターフェイス関数を使用して、結果セットから各行とローカル フィールドのデータを取得します。
4. 結果セットから各行の各フィールドの情報を抽出
5. 結果セットmysqlハンドルを含むリソースを解放
以下で詳しく説明します使用する必要のあるいくつかの主要なインターフェイス機能。
2.1 mysql_real_connect
この関数は、ホスト上で実行されているデータベース エンジンに接続するために使用されます。接続に成功するとデータベースを操作できるハンドルが取得され、失敗した場合は NULL ポインタが取得されます。返されます。
MYSQL *mysql_real_connect(MYSQL *mysql, const char *host, const char *user, const char *passwd, const char *db, unsigned int port, const char *unix_socket, unsigned long client_flag )
この関数には多くのパラメータがあり、各パラメータの意味は次のとおりです:
mysql: 既存のMYSQL 構造。 mysql_real_connect() を呼び出す前に、mysql_init() を呼び出して MYSQL 構造を初期化する必要があります。
#host: ホスト名または IP アドレスです。 「host」が NULL または文字列「localhost」の場合、接続は localhost への接続として扱われます。
#user: ユーザーの MySQL ログイン ID。 「user」が NULL または空の文字列「" の場合、そのユーザーは現在のユーザーとみなされます。
passwd: ユーザーのパスワード。 「passwd」が NULL の場合、ユーザーのユーザー テーブル内のエントリ (パスワード フィールドが空のもの) のみが一致するかどうかチェックされます。
db: データベース名です。 db が NULL の場合、接続によりデフォルトのデータベースがこの値に設定されます。
port: 「port」が 0 でない場合、その値が TCP/IP 接続のポート番号として使用されます。 「ホスト」パラメータによって接続のタイプが決定されることに注意してください。
unix_socket: unix_socket が NULL でない場合、この文字列は使用するソケットまたは名前付きパイプを記述します。 「ホスト」パラメータによって接続のタイプが決定されることに注意してください。
client_flag: 値は通常 0
2.2 mysql_query または mysql_real_query
この関数はused クエリ コマンドをデータベースに送信し、データベースに実行させます。 0 を返すとクエリが成功したことを示し、それ以外の場合は失敗します。
int mysql_query(MYSQL *mysql, const char *stmt_str)
Or:
int mysql_real_query(MYSQL *mysql, const char *stmt_str, unsigned long length)
mysql: を通じて取得された mysql 操作ハンドルです。
stmt_str: 実行する必要があるクエリ ステートメントを示します。
#length: クエリ ステートメントの長さです。
上記 2 つの関数の違いは次のとおりです。
mysql_query() はバイナリ ステートメント、つまりパラメータ stmt_str の実行には使用できません。できません 文字に解析されるバイナリ データがあります。
mysql_query クエリ速度は、クエリ ステートメントの長さを計算する必要があるため、若干遅くなります。
2.3 結果セット mysql_store_result
を取得します。関数は、クエリが成功した場合は結果セットを返します。失敗した場合は、NULL を返します。
MYSQL_RES *mysql_store_result(MYSQL *mysql)
2.4 結果セット内のデータの各行を表示します。
次の入力パラメータこの関数は、ステップ (3) で返された結果セットです。呼び出されるたびに、結果セットの次のデータ行が返され、ポインタは 1 行後方に移動します。次のデータ行がない場合は、NULL が返されます。
mysql_num_fields(result) を使用して結果セット内の行数を計算し、mysql_num_fields(result) を使用して列数を計算できます。 rowが、ある行の情報であれば、row[0]、row[1]となります。 。 。行の各フィールド情報。
MYSQL_ROW mysql_fetch_row(MYSQL_RES *result)
3. プログラミングの例
ここでの環境は Linux システムです。使用されるローカル データベース名は CrashCourse、クエリ テーブル名は products です。次のプログラミング例は、products テーブル内の価格が 30 を超えるすべてのアイテムをクエリする方法を示しています。 products テーブルの完全な内容は次のとおりです:
#include#include <mysql/mysql.h> #include using namespace std; MYSQL mysql; //mysql连接 MYSQL_RES* res; //结果集结构体 MYSQL_ROW row; //char** 二维数组,存放记录 int main() { // 步骤1: 初始化并连接数据库,获得操作数据库的句柄 mysql_init(&mysql); //初始化 if (!(mysql_real_connect(&mysql, "localhost", "root", "root", "CrashCourse", 0, NULL, 0))) { cout << "Couldn't connect to Database!\n : " << mysql_error(&mysql); exit(1); } else { printf("Database connection succeeded. Connected...\n\n"); } // 步骤2: 执行查询语句,查询需要的数据(设置编码格式也相当于执行特殊的查询语句) mysql_query(&mysql, "set names gbk"); // 设置编码格式 mysql_query(&mysql, "SELECT * from products where prod_price > 30"); // 步骤3:获取结果集 res = mysql_store_result(&mysql); // 步骤4:显示结果集中每行数据 int cols = mysql_num_fields(res); // 计算结果集中,列的个数 while (row = mysql_fetch_row(res)) { for (int i = 0; i < cols; ++i) { cout << row[i] << "\t"; } cout << endl; } // 步骤5:释放结果集合mysql句柄 mysql_free_result(res); mysql_close(&mysql); return 0; }
クエリの結果は次のとおりです:
以上がC++ で mysql データベースに接続してデータを読み取る方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









DockerでMySQLを起動するプロセスは、次の手順で構成されています。MySQLイメージをプルしてコンテナを作成および起動し、ルートユーザーパスワードを設定し、ポート検証接続をマップしてデータベースを作成し、ユーザーはすべての権限をデータベースに付与します。

GolangとCにはそれぞれパフォーマンス競争において独自の利点があります。1)Golangは、高い並行性と迅速な発展に適しており、2)Cはより高いパフォーマンスと微細な制御を提供します。選択は、プロジェクトの要件とチームテクノロジースタックに基づいている必要があります。

VSコードでは、次の手順を通じて端末でプログラムを実行できます。コードを準備し、統合端子を開き、コードディレクトリが端末作業ディレクトリと一致していることを確認します。プログラミング言語(pythonのpython your_file_name.pyなど)に従って実行コマンドを選択して、それが正常に実行されるかどうかを確認し、エラーを解決します。デバッガーを使用して、デバッグ効率を向上させます。

VSコードでCを書くことは実行可能であるだけでなく、効率的でエレガントです。重要なのは、コードの完了、構文の強調表示、デバッグなどの関数を提供する優れたC/C拡張機能をインストールすることです。 VSコードのデバッグ機能は、バグをすばやく見つけるのに役立ちますが、Printf出力は昔ながらのデバッグ方法です。さらに、動的メモリの割り当ての場合、メモリリークを防ぐためにリターン値をチェックしてメモリを解放する必要があり、これらの問題のデバッグはVSコードで便利です。 VSコードはパフォーマンスの最適化に直接役立つことはできませんが、コードパフォーマンスを簡単に分析するための優れた開発環境を提供します。優れたプログラミング習慣、読みやすさ、保守性も非常に重要です。とにかく、VSコードはです

WebアプリケーションにおけるMySQLの主な役割は、データを保存および管理することです。 1.MYSQLは、ユーザー情報、製品カタログ、トランザクションレコード、その他のデータを効率的に処理します。 2。SQLクエリを介して、開発者はデータベースから情報を抽出して動的なコンテンツを生成できます。 3.MYSQLは、クライアントサーバーモデルに基づいて機能し、許容可能なクエリ速度を確保します。

Docker LNMPコンテナコールステップ:コンテナの実行:Docker Run -D - Name LNMP -Container -P 80:80 -P 443:443 LNMPスタックコンテナIPを取得する:Docker Inspect LNMP -Container | GREP iPaddress Access Webサイト:http://&lt; container ip&gt;/index.phpsshアクセス:docker exec -it lnmp -container bash access mysql:mysql -u roo

VSコードは、Microsoftが開発した無料のオープンソースクロスプラットフォームコードエディターと開発環境であるフルネームVisual Studioコードです。幅広いプログラミング言語をサポートし、構文の強調表示、コード自動完了、コードスニペット、および開発効率を向上させるスマートプロンプトを提供します。リッチな拡張エコシステムを通じて、ユーザーは、デバッガー、コードフォーマットツール、GIT統合など、特定のニーズや言語に拡張機能を追加できます。 VSコードには、コードのバグをすばやく見つけて解決するのに役立つ直感的なデバッガーも含まれています。

GolangとCのパフォーマンスの違いは、主にメモリ管理、コンピレーションの最適化、ランタイム効率に反映されています。 1)Golangのゴミ収集メカニズムは便利ですが、パフォーマンスに影響を与える可能性があります。
